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的.
测试结束,代码中为了改变亮灯的效果,把库改成了代码库,这样可以清楚的看到库里面的函数,附上源码,供大家参考.
UART_TEST_msp432p401r.zip
ivan zhu1:
如果觉得串口的测试能够帮助到您,帮忙投上我的一票.
第一个zbx60200就是我,
bbs.21ic.com/forum.php
user5182684:
这篇分享比较清晰的解释了串口例程,而且使用了示波器抓取波形,不至于纸上谈兵,让我们更直观的看见收发的数据,和不是单纯地显示0和1,这方面值得广大程序员学习,不要整天只敲代码,有时候动手了解下硬件和测试没有坏处,了解原理是非常好的,赞一个!
user5845663:
这个得投一票,有完整的源代码介绍和测试图例,便于学习参考。
blust5:
用示波器抓取通讯波形,并分析确认数据与波特率,分析讲解清晰直观,很方便初学者理解接受,比不用示波器的纯文字分析解说更显透彻。
user4427013:
这个值得大家投一票,有完整的源代码实例,通过示波器测试数据波形并分析原理,方便初学者学习和借鉴。
user3350006:
测试使用的工具很牛,程序也过得去,希望从实际项目出发,例如对于长时间数据通讯中出现各种问题,如何解决,抽丝剥茧得写出来,这样就更好了,希望写出更好的程序。
fighting_goon:
测评内容详细,并且不只是代码,还有示波器测试,让代码效果更明了,赞~!!
user3735680:
这篇分享讲解的比较生动形象,首先从中断函数讲起,随后通过测试,在示波器上演示了抓取到的波形,最后讲解了UART的重点部分波特率来收尾,并提供了源码参考,循序渐进,十分不错!
user1538729:
欣赏作者的学习态度,通过一步一步地探究找出并理解了串口工作机理,知其然知其所以然。以同样的学习方法对于其它各功能组件的学习具有一定的指导及借鉴作用,举一反三!谢谢作者的分享,赞!
yaneda:
这个可以投一票,使用了测试工具示波器来抓取波形,验证了 软件代码,更加有说服力。整篇测评也比较通俗易懂,之外,也附上了代码,有助于大家学习。