一、芯片简介
二、串口波特率设置
串口波特率的计算和DLM以及DLL两个寄存器有关。具体的计算公式:除数(DLL和DLM的值)=芯片主时钟/16or8(具体看芯片手册)/波特率。
三、四种常见接收中断
首先接收中断需要再中断使能寄存器来开启相应中断后才会有中断产生。
1.接收线路状态中断
接收线路状态中断是在数据传输过程中出现了OVERR、PARERR、FRAMEERR、BREAKINT这几种情况,清中断的方法是读取LSR寄存器。
2.接收数据可用中断
接收数据可用中断是接收的字节数达到了FIFO的设置触发阈值,这时候清中断是读取RBR寄存器,把接收到的数据取出来。这里我们的例程给的是do..while..来读取接收寄存器的数据,如果此时还有数据在写入,此时读取接收字节长度的时候就是出现读取字节数大于FIFO的触发值。所以可以在接收数据可用中断的时候规定只读取指定字节。
3.接收数据超时中断
接收数据超时中断是超过4个字节的时间没有收到下一个数据,就会出现此中断,此时清中断的方法就是读RBR寄存器。此中断并不是一个错误的中断,有不少客户会错误的认为接收数据超时中断是因为接收不到数据导致的,其实并不是这样的。这个中断是接收到的数据没有达到FIFO触发阈值,此时就会进入接收数据超时中断。
4.THR寄存器空中断
THR寄存器空中断是发送保持寄存器空中断,此中断就是告知数据已经发送完毕,清中断的方法就是读IIR或写THR寄存器。
四、常见问题解决
1.芯片使用遇到问题先检查硬件
(1)检查硬件,检查芯片的VCC引脚的电压是否为手册里面要求的典型值。看一下VCC的纹波是否过大。
(2)示波器看一下芯片晶振是否正常起振。
(3)检查硬件连接是否有误
(4)芯片预留了SCR寄存器,可以往此寄存器读写数据来判断芯片是否正常。
2.SPI通讯问题
(1)首先看spi时钟有没有超过手册规定的最大值
(2)部分芯片对于命令与数据,命令与命令之间是由最小时间的间隔要求,具体需要看芯片手册。可以用逻辑分析仪查看是否有这些时间间隔。
(3)所有的SPI转串口(扩展)的芯片的时序,CS是在发送完addr和数据后,才会重新拉高的。
3.串口波特率设置问题
(1)检查晶振是否与芯片手册规定的频率一样
(2)在设置串口波特率时有没有将DLAB为置1,不然DLL和DLM的值写不进去,就会导致串口通讯异常。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_61852620/article/details/135263513
|