通讯仍是比让LED灯闪耀有用得多的。
这次试试运用UART,完成开发版和PC间的通讯。功用比较简略,便是把PC发向开发版的内容发送回去。这次首要介绍一下UART的装备,至于通讯,则运用较为简略的不断查询UART状况寄存器的循环完成。
一、 预备工作
UART作为异步串口通讯协议的一种,所以有必要先要预备一根串口线。用串口线将PC的串口和开发板的DBGU口连起来。
一起,在PC上需求预备好串口通讯软件。
二、 电路
DBGU有两个引脚别离与PA10和PA9相连,这两个复用引脚的外设A即为UART0。
三、 PIO装备
需将PA9和PA10引脚两个引脚复用为外设A引脚。
四、 UART测验
为测验线缆的衔接、串口通讯软件是否正确,能够先运用UART的测验形式。在运用“主动回应形式”或许“长途回环形式”时,接纳引脚均会和发送引脚相连,即发送端会接纳到发送的数据。
以下为在UART_MR中挑选“长途回环形式”时的代码:
1UART0->UART_MR = UART_MR_CHMODE_REMOTE_LOOPBACK;
若PIO装备、线缆衔接、PC端软件均无问题,则现在在PC端即可接纳到本来发送的数据了。测验成功后留意删去相关的测验代码。
五、 UART装备
PMC时启用UART时钟
1PMC->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%。
UART0->UART_BRGR = UART_BRGR_CD( 13 );
UART操控
需求在UART操控寄存器(UART_CR)中使能接纳器及发送器:
UART0->UART_CR = UART_CR_RXEN | UART_CR_TXEN;
UART数据包格局
本芯片的UART支撑的格局仅有:8位数据位、发送时中止位为1位。但咱们能够设置校验位,不过为了简略起见,这儿不运用校验:
1UART0->UART_MR = UART_MR_PAR_NO;
六、 数据收发
经过不断查询状况寄存器的相关字段,以了解收发的状况,然后进行操作即可:
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;校验 无。设置完成后即可通讯。