通信还是比让LED灯闪烁实用得多的。
这次试试使用UART,实现开发版和PC间的通信。功能比较简单,就是把PC发向开发版的内容发送回去。这次主要介绍一下UART的配置,至于通信,则使用较为简单的不断查询UART状态寄存器的循环实现。
一、 准备工作
UART作为异步串口通信协议的一种,所以必须先要准备一根串口线。用串口线将PC的串口和开发板的DBGU口连起来。
同时,在PC上需要准备好串口通信软件。
二、 电路
DBGU有两个引脚分别与PA10和PA9相连,这两个复用引脚的外设A即为UART0。
三、 PIO配置
需将PA9和PA10引脚两个引脚复用为外设A引脚。
四、 UART测试
为测试线缆的连接、串口通信软件是否正确,可以先使用UART的测试模式。在使用“自动回应模式”或者“远程回环模式”时,接收引脚均会和发送引脚相连,即发送端会接收到发送的数据。
以下为在UART_MR中选择“远程回环模式”时的代码:
1 | UART0->UART_MR = UART_MR_CHMODE_REMOTE_LOOPBACK; |
若PIO配置、线缆连接、PC端软件均无问题,则现在在PC端即可接收到原本发送的数据了。测试成功后注意删除相关的测试代码。
五、 UART配置
PMC时启用UART时钟
1 | PMC->PMC_PCER0 = (1 << ID_UART0); |
波特率设置
波特率的计算方法为:MCK / ( CD * 16 ),其中CD在UART_BRGR中设置。
因为CD必须为整数,所以能使用的波特率的值就较为有限了。同时,我所使用的串口通信软件只支持选择常用的波特率。而在通信过程中,对双方波特率的误差有一定的限制(如芯片手册中提到,不推荐USART在波特率误差超过5%时使用)。所以这更减少了波特率的选择范围。
在使用默认MCK,即4 MHz的情况下,我选择使用一个较为慢速的波特率:19200 Hz。将CD的值设为13,使实际波特率为19230 Hz左右,即误差大概为0.1%。
1 | UART0->UART_BRGR = UART_BRGR_CD( 13 ); |
UART控制
需要在UART控制寄存器(UART_CR)中使能接收器及发送器:
1 | UART0->UART_CR = UART_CR_RXEN | UART_CR_TXEN; |
UART数据包格式
本芯片的UART支持的格式仅有:8位数据位、发送时停止位为1位。但我们可以设置校验位,不过为了简单起见,这里不使用校验:
1 | UART0->UART_MR = UART_MR_PAR_NO; |
六、 数据收发
通过不断查询状态寄存器的相关字段,以了解收发的状态,然后进行操作即可:
1 2 3 4 5 6 7 8 9 10 11 12 | while(1) { /* 接收*/ while ((UART0->UART_SR & UART_SR_RXRDY) == 0) ; data = UART0->UART_RHR; /* 发送*/ while((UART0->UART_SR & UART_SR_TXRDY) == 0) ; UART0->UART_THR = data; } |
七、 PC端配置
将PC端的串口通信格式设置如下:波特率 19200;数据位 8;停止位 1;校验 无。设置完成后即可通信。
关键字:SAM4E 单片机 UART初步
引用地址:
SAM4E单片机之旅——8、UART初步
推荐阅读最新更新时间:2024-03-16 15:29
如何用单片机代替专用I/O接口芯片方法简介
采用单片机设计液位监控仪是很通用的做法。如果要测量的液位有很多路(16路以上),每路要求能滚动显示1年内每班、每日、每月的输入输出总量(1日3班),正常或意外停电数据不丢失,人机交互能力要强(要设置适当数量的按键及采用LCD显示),并且每路液位要求对应2路控制输出信号(液罐液体输入控制和输出控制),配置微型打印机端口,设置声音报警,所有这些无疑需要很多的I/O端口来支持,单凭一个单片机是办不到的,需要扩展I/O端口。在此设计中,笔者认为采用专用I/O扩展芯片有较多的弊端,权衡利弊,选择了用单片机来代替专用I/O接口芯片的方法。 1 专用 I/O芯片与单片机用作I/O芯片的对比 ①专用I/O接口芯片的I/O口数量不
[单片机]
如何使用51单片机实现串口通信
STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信。串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口。 51单片机的串口引脚为P3.0引脚与P3.1引脚,分别是RXD和TXD引脚。串口通信可以用于单片机和其它芯片通信或者单片机之间通信或者单片机与电脑通信。串口通信一般都是交叉连接。标准的串口有9个引脚,我们一般情况下,只用RXD TXD GND,剩下的引脚都是通信控制引脚,在以前用于控制电话机,现在已经基本上不用了。所以我们的51单片机上只保留了RXD和TXD。 串口通信的协议非常简单。如果单片机上的串口不够用,还可以用任意两个引脚模拟串口通信。 一般情况,我们用带有起始位的8
[单片机]
单片机89C51系列简介
89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 主要特性 与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:10
[单片机]
一种基于单片机的新型线阵CCD电路
摘 要: 本文在综合几种传统的线阵CCD驱动时序产生方法优、缺点的基础上,提出了一种基于单片机的新型线阵CCD驱动电路,结合一款常用芯片TCD1500C,详细介绍了该方法的具体实现。
关键词:单片机;线阵CCD;时序
引言
不同厂家、不同型号的CCD的驱动时序是不同的,加之对不同性能、不同应用场合的体积、成本、灵活性要求不同,于是产生了众多的驱动时序的产生方法,主要有直接数字电路驱动、单片机口驱动、EPROM驱动、专用IC驱动等常用的驱动时序的产生方法。但是它们存在着逻辑设计较为复杂、调试困难、柔性较差、驱动时钟低等缺点。
本文在综合各种驱动时序方法的基础上,提出了的一种基于单片机的新型驱动电路。该电路使用独立的时钟
[应用]
stc51单片机硬件SPI驱动nrf24l01程序
stc51系类单片机大多数带SPI模块,例如STC12C5608AD,就带有SPI口,可以直接用此SPI口驱动nrf24l01,省去模拟SPI的麻烦。 spi初始化代码如下: void SPI_Init(void) { SPSTAT |= 0XC0; // 清高两位, SPCTL = 0XD0; // 设置为主模式,开SPI } spi收发数据代码如下: uchar SPI_RW(uchar tr_data) { uchar i=0; SPSTAT |= 0Xc0; // 清高两位, SPDAT=tr_data; while(((SPSTAT&0X80)!=0X80)&&(i 20)) { i++; delay_ms(1)
[单片机]
时钟芯片SD2200ELP与AVR单片机TWI接口控制的设计
在提升机制动闸瓦间隙实时在线检测的设计中,需要保存故障时间和故障数据。 大部分仪器仪表中都要使用时钟芯片,但是很多的实时时钟芯片(如PCF8563)没有掉电保护,须外接晶振和电池,比较麻烦。而深圳兴威帆电子技术有限公司生产的SD2200ELP是内置32 KBE2PROM的串行实时时钟芯片,不需要外接器件支持,连线简单、可靠,提供的数据精确,断电后也能继续工作。微控制器采用Atmel公司的ATmegal6单片机,利用AT-megai6的硬件TWI接口可直接对SD2200ELP进行操作,无需软件模拟I2C方式,使用方便、可靠。 1 SD2200L简介 SD2200L系列(包括SD2200B/C/D/E/FLP)是一
[单片机]
51单片机读写SD卡程序
SD卡简介 SD卡,是一种基于半导体快闪记忆器的新一代记忆设备,SD于1999年8月研制成功,其重量只有2克。但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。SD卡也很容易重新格式化,有广泛的应用领域,如音乐、电影、新闻等多媒体文件都可以方便地保存,数码相机也开始支持SD卡。SD卡容量最高能达到4GB。 SD卡在24mm 32mm 2.1mm的体积内结合了〔SanDisk〕快闪记忆卡控制与MLC(Multilevel Cell)技术和Toshiba(东芝)0.16u及0.13u的NAND技术,通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分
[单片机]
微芯、Luminary对簿公堂,专利侵权战火燃至32位MCU领域
微芯科技(Microchip Technology)日前指控Luminary Micro侵犯其32位微处理器技术的专利权。 这项在美国亚利桑那州法院提出的起诉声称,Luminary Micro公司的28引脚Stellaris系列32位微控制器侵犯了Microchip公司的三项专利。Microchip公司(美国亚丽桑那)请求法院发布禁止令,永远禁止Stellaris系列产品的销售与使用,并要求赔偿。 Microchip是微控制器供应商,声称Luminary Micro(美国德州)侵犯了它的三项专利,美国专利号为5,847,450、6,483,183以及6,696,316。Luminary Micro是一家无厂半导体初创公司,成立
[焦点新闻]