在万利的lk板上,调试can接口时,还回模式下能够正常,当把工作模式CAN_InitStructure.CAN_Mode=CAN_Mode_Normal改为正常模式,用示波器无法看到can接口有信号输出。接受端也没有接受到信号。请问那位能知道为什么吗?新手上道!谢谢
可能是CAN的接收有问题,
可能是CAN的接收有问题,CAN总线的收发是自闭环的,发的同时要进行自接收
CAN总线的收发是自闭环的
楼上所说的并不明白,可以理解为,自身发的同时,自身必须去接受吗?我在还回模式下运行正常的程序,那么只改动发送模式的CAN_InitStructure.CAN_Mode=CAN_Mode_Normal,就可以达到正常模式运行吗?新手不是很明白,两个模式切换需要修改那些参数。
CAN的接收端有问题
同意2楼的意见,
查一下接收端是否正常。
用示波器看can输出没有波形
我用示波器查看stm32 can发送脚无输出
CAN规范决定了
想要测试正常的CAN收发,必须保证总线上至少有两个节点。
如果只存在一个节点,那么该节点在尝试发送数据后会由于无其它节点的响应很快由正常状态转变为被动错误状态。
请问楼上,正常节点的含义
正常节点是不是能够正常收发的意思,那我还回模式正常的器件改正常模式的器件算不算正常呢?初次接触can有许多不懂的地方,望不吝赐教。呵呵
CAN调试
我的问题是:
我用周立功的USBCANII调试两块板子(一块是基于103VBT6,一块是基于103VCT6),查询和中断方式均能正常收发(就是将lookback改为Normal)。
但是,当我再用两个板子进行互调的时候,怎么也调不通(两板的终端电阻均已经置为有效状态,与用USBCANII时的状态一样;程序与用USBCANII时的程序一样),各位大侠帮我分析分析咋回事啊?
相关链接:
https://bbs.eeworld.com.cn/upfiles/img/20097/20097794815881.rar
楼上的接收怎么解决啊?
一块是基于103VBT6,一块是基于103VCT6,用同一个程序?那么你程序运行过程中接收问题怎么解决啊?你是在不停的发然后等待接收,这样可以吗?而且你的等待接收过程不合理的,个人愚见,我的发送还没有解决,但是感觉你的接收和发送要分开,可以一个发送一个接收的。
can双节点 通信
http://www.stmsky.com/bbs/viewthread.php?tid=1192&extra=page%3D1
我的问题的解释
我那个程序,只要更改一下端口的初始化以及CAN是否重映射,分别在不同板子上调试的。我用了周立功的USBCANII分别与两个板子联调的。程序开接收中断,并不停的向外发数据,USBCANII能收到发来的数据,USBCANII发出数据后,两个板子也都能进接收中断。
但是,当我用两个板子互联调试的时候,确怎么也进不了接收中断(改为lookback模式是一定进的)。
现在我把两个程序拆开了,大侠给瞅瞅(硬件都是成熟在用电路)。
相关链接:
https://bbs.eeworld.com.cn/upfiles/img/20097/20097813185489.rar
问题解决
还是有个终端电阻焊的不对,造成两节点联调不正常(超郁闷)!所以,还是提醒大家,多多检查啊!
问楼上的终端电阻?
终端电阻,你用两块板子联调的,那么两块板上都用了120欧电阻吗?这样can回路的阻值只有60欧?
stm32 can接口中断使能
是不是每次使用can的接收中断都需要打开中断使能?CAN_ITConfig(CAN_IT_FMP0,ENABLE),新手很费解这种现象。
CAN联调
两块板子联调,当然就2个节点了,而总线两端需要两个终端电阻的,所以是60欧姆。
如果你使能了接收中断,而没有再关闭该中断,那就不需要再打开使能了阿。
有位前辈这样告诫:
1)CAN引脚重影射时,需要配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)。
2)记清楚时钟用了HSE还是PLL,还有PCLK2是怎么从HCLK分频的。算CAN总线速率的时候是用CAN的时钟去除以(SJW+BS1+BS2)再除以Prescaler。
3)两个终端电阻一定配备。
4)开了中断不去处理是要遭报应的。。。别忘记把收到的message删掉。
请教楼上的4)
别忘记把收到的message删掉,这步该如何操作的?