This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教关于CAN总线数据帧中的数据长度和数据长度编码?

Other Parts Discussed in Thread: CONTROLSUITE

大家好!

        我是DSP的菜鸟,最近在看CAN总线的软硬件部分,主要迷茫在邮箱每次发送和接收的数据长度,因为无论接收还是发送邮箱都有一个数据长度编码的寄存器,设置该邮箱接收或发送的数据字节数0~8可设置,在CAN总线的帧中也有控制位包含数据的长度。

        我的疑问是邮箱接收数据时,如果该邮箱的数据长度编码寄存器配置成了固定的数值,当主机发送数据帧时发送的ID是正确的,但是所发送的数据长度与接收邮箱中配置的数据长度编码不同能不能通过过滤器或者自己的校验,能不能被邮箱顺利的接收,如果能够接收,那接收邮箱的数据长度编码寄存器到底起了什么作用。如果不能接收是数据帧自身的CRC校验未通过还是数据接收滤波器认为数据的标识符与接收邮箱不符合也就是数据编码长度不对?

        本人菜鸟,CAN总线是刚刚接触,希望大家赐教,多多益善,相信大家都能帮助到我,谢谢!

  • 您好,

    不知您用的芯片型号?

    建议跑下ti例程,比如以下路径:

    C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_examples_ccsv5

  • 您好再次感谢您的回复

            例程我已经看过几个了,大多数是自测模式的。

            例程里全部将发送邮箱的数据长度(DLC)和接收邮箱的数据长度(DLC)配置成一样的了。

            我想知道原因,是不是如果接收邮箱的数据长度(DLC)与发送邮箱的数据长度(DLC)不一致就接收不到正确的数据了呢?

            手头的很多材料没有强调接收和发送邮箱数据长度的一致问题,但例程统统配置成了相同的。

            再次感谢您的回复,并期待您的再次解答,谢谢!

  • 您好!

            我用的是DSP2812,但感觉我的问的问题和芯片关系不大,看了ARM的程序,也有接收和发送数据长度的概念!

            感谢您的多次回复!

  • 您好!

           我看了几个例程,大多是自测模式的,但这没什么关系!关键是我的所有例程里面发送邮箱和对应的(ID)接收邮箱都将数据长度配置成了相同。

           我的疑惑是是否应该配置成为相同的数据长度,按照我的理解是必须配置成相同长度的,因为数据帧的控制位里面包含数据长度也就是邮箱的配置信息,当接收邮箱接收到的数据长度与自己配置的数据长度不符时将会判断为错误帧。

            我想的是一定要将接收邮箱和发送邮箱的数据长度(DLC)配置成相同的,不知对不对,还请您再次指点!