sxmengjing 发表于 2013-12-26 16:04

同时使用CAN的多个邮箱发送数据问题

大家有没有用DSP的CAN模块的多个邮箱的。我用dsp28335的CAN模块与调试软件联调时,如果我用4个邮箱同时发送,波特率设为1M或500K时,调试软件能收到一部分数据,之后就出现总线错误,收不到数据了。但是将波特率降到250K时,收发就没有问题了。
如果只用一个邮箱收发数据,波特率1M和500K都没有问题,请问这是为什么呢?

zhangmangui 发表于 2013-12-26 17:53

没遇到过DSP中CAN使用熟悉的朋友帮忙解答一下

msblast 发表于 2013-12-27 12:55

我用的CAN位率125Kbps,同时使用很多个邮箱,收发都有。

raoxianbin 发表于 2013-12-27 18:34

本帖最后由 raoxianbin 于 2013-12-27 18:37 编辑

未遇到这种情况,canmonitor版本太低吗,丢失数据,还有,你程序的波特率设置和软件设定的波特率相同吗

zhangmangui 发表于 2013-12-28 23:01

如果是多个邮箱的话,你程序有在新数据来之前将接收到数据读出来吗?

msblast 发表于 2013-12-29 10:10

zhangmangui 发表于 2013-12-28 23:01 static/image/common/back.gif
如果是多个邮箱的话,你程序有在新数据来之前将接收到数据读出来吗?

这是个问题哦
首先要中断接收,其次接收到数据之后立即退出中断,不要在中断里处理数据。

kingzlt 发表于 2014-1-3 10:13

DSP的Ecan工作机制中有优先级的配置,并且可以根据总线的忙闲状态自动确认发送时间,程序中只需要使能发送即可,不会存在冲突的问题,目测你这个问题应该是由于CAN收发器的响应速度引起的,其实数据已经发出但是收发器无法响应,以前用过网上淘的百十块的收发器存在这个问题

zhangmangui 发表于 2014-1-3 11:37

kingzlt 发表于 2014-1-3 10:13 static/image/common/back.gif
DSP的Ecan工作机制中有优先级的配置,并且可以根据总线的忙闲状态自动确认发送时间,程序中只需要使能发送 ...

感谢解答CAN方面还望你多多指点

kingzlt 发表于 2014-1-3 13:05

共同进步,呵呵

sxmengjing 发表于 2014-1-8 11:55

kingzlt 发表于 2014-1-3 10:13 static/image/common/back.gif
DSP的Ecan工作机制中有优先级的配置,并且可以根据总线的忙闲状态自动确认发送时间,程序中只需要使能发送 ...

请问你所说的CAN收发器是CAN模块的接口芯片还是说与电脑相连的CAN/USB转换器呢

sxmengjing 发表于 2014-1-8 11:58

msblast 发表于 2013-12-27 12:55 static/image/common/back.gif
我用的CAN位率125Kbps,同时使用很多个邮箱,收发都有。

请问如果接收方用4个邮箱同时接收发送方发送的4个邮箱的内容时,我使能最低优先级的中断,进入中断后把4个邮箱的内容全读出来,这样可以实现吗?我试验了一下,只有最高优先级的那个邮箱偶尔能收到数据,不知道是我程序中哪里做的不合适。

msblast 发表于 2014-1-8 12:04

如果同时接收到数据,优先级别高的邮箱产生中断。所以在中断函数里要检查优先级别低的邮箱是否有接收到数。

sxmengjing 发表于 2014-1-8 15:03

msblast 发表于 2014-1-8 12:04 static/image/common/back.gif
如果同时接收到数据,优先级别高的邮箱产生中断。所以在中断函数里要检查优先级别低的邮箱是否有接收到数。 ...

谢谢,这个问题解决了,按照你说的方法可以实现

zhangmangui 发表于 2014-1-8 22:14

熟悉了CAN使用的朋友    希望能够总结发帖出来
方便大家

仙人球W 发表于 2015-9-19 14:23

msblast 发表于 2013-12-27 12:55
我用的CAN位率125Kbps,同时使用很多个邮箱,收发都有。

DSP28035我用的循环接受模式,发送没有问题,但是我用上位机发送数据,DSP接收不到数据。能否参考下你的程序!谢谢!
页: [1]
查看完整版本: 同时使用CAN的多个邮箱发送数据问题