线用回环模式测试,如果回环模式通过,则表示CAN总线驱动无问题,只和外部电路有关。
如果回环都接收不到说明是程序问题。
您好,对于你的遇到的问题,我很高兴能为你提供帮助,我之前也遇到过哟,以下是我的个人看法,希望能帮助到你,若有错误,还望见谅!。你确定你使用的是交叉串口线,一般这种情况是引脚接线不正确引起的,我以前也出现过,后来认为的把串口线的Rx和Tx互换后就可以了非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
STM32单片机使用串口进行通信时需要进行硬件连接和软件编程配置。串口收不到数据的问题可能与硬件连接或者软件配置有关。其中,添加电容可能会影响串口线路电气参数,如线路阻抗等,从而导致串口信号传输受到影响,而使串口无法正常接收数据。解决办法包括确认串口连接是否准确无误,检查硬件电路是否正确设计和软件编程是否存在问题等。通过综合排查这些因素,并进行相应的优化,可以解决串口接收不到数据的问题。
先排除硬件原因,看线路对不对,用示波器看下通信波形,再看软件程序,最好是能仿真一下,把断点放在串口中断中看串口接收数组里面有没有数据。
程序思路是这样的,进入中断后:
接收陀螺仪的数据,如果收到的第一个字节不是0x55,就不接收。。此时counter是不增加的。。
如果接收到的第一个字节是0x55,counter自增,收到的数据暂存至 Temp。。。
当 counter自增到11时,将Temp收到的数据存至Re_buf,同时counter清零,sign置1
第一行的意思是 表示 如果接收寄存器非空,即有数据,那么判断为接收中断
第五行 是跳出中断
应该是匹配电阻的问题,如果你只有两个点的话,你可以把其中一个匹配电阻改成60欧左右的试一下(前提是你的回环模式是正常的)。
对比初始化函数以及检查硬件,120欧电阻还是要的,什么光耦电路能去掉还是去掉,H/L直接从TJA1050芯片出来即可。
本文标签:stm32can收不到数据