MSP432P401R UART串口硬件一致性测试(位的波形与波特率确认)
继上次发了定时器一致性测试
https://e2echina.ti.com/question_answer/microcontrollers/other_mcu/f/23/t/179596
我们继续进行MSP432P401R UART串口硬件一致性测试
这次我们继续拿TI提供的例程进行测试,还是outofbox_msp432p401r这个例程,
路径在这里:
我们先来理解这个中断函数里面它所干的事情,只有分析明白我们才能利用这个代码,
串口中断里面收到数据会放到receiveByte这个变量里面去,如果我们通过串口助手发送给串口一个字节,
那么MSP432P401R会返回一个字符串A,并且把ACK这个标志位置位,继续发送包括有START的字符串,
那么这个字符串会覆盖第一个字符串作为首个字符串,并且bytesReceived通过溢出的方式清零,
如果在发送1或者两个或者3个字节,那么会点亮相应的LED灯,超过3个字节,就是设置亮灯的时间,
到bytesReceived收到6个的时候标志位ack清零,循环继续发送A.
我的理解大概就是这样.
有了上面的理解我们就好办事了,下面我进入正题UART串口硬件一致性测试.
我们怎么测试呢,之前的理解我们知道,
只要我们发送任意字符串,那么串口就会回复A,
我们就利用串口助手来发送给串口,
OK,这里成功回复了一个字符串A,这个我们通常叫握手信号是不是.
现在我们连上示波器
在示波器上我设置50ms进行触发抓取信号,
在板子发送A的时候示波器成功触发,
我们放大
到了这里就不陌生了吧,
8N1的模式,字符A=0x41,二进制为0100 0001
在示波器上,最左边一个低电平表示0,起始位;
然后依次是1000 0010,
最后一位就是8N1的那个1,
正好和发送的数据最高位和最低位反过来.
这就是所谓的LSB.
下面我们来计算波特率
我们将图再一次的放大,
大家看到了吗,每一位的时间是8.7us,我们来计算一下波特率,1000000/7.8=114942
约等于115200,比较率为%99.77,这个结果是OK的.
测试结束,代码中为了改变亮灯的效果,把库改成了代码库,这样可以清楚的看到库里面的函数,附上源码,供大家参考.