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.

[参考译文] TMS320F28379D:比特率不匹配

Guru**** 2478825 points
Other Parts Discussed in Thread: TMS320F28379D

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1465839/tms320f28379d-bitrate-mismatch

器件型号:TMS320F28379D

工具与软件:

尊敬的 TI:

我将 TMS320F28379D 与 PCANFD (CAN 转 USB)适配器配合使用。 我的问题是无法在两端正确接收数据。 在板侧、我将比特率设置为500kbps、但在 PCANFD 侧、我只能在比特率设置为250kbps 时接收数据。 将比特率设置为250 kbps 时、可以查看数据、但不能查看500 kbps。

我不确定为什么会发生这种情况。 时钟很重要吗? 比特率、预分频器或 SJW (同步跳转宽度)是否会在这个问题中起作用? 我很难理解如何设置正确的配置。 我查看过 TI 技术文档、但找不到明确的答案。 如果您能提供有关如何解决此问题的清晰说明和指导、将会非常有帮助。

#include "device.h"
#include "driverlib.h"
#include <can.h>

#define TX_MSG_OBJ_ID      1
#define MSG_DATA_LENGTH    4

uint16_t data = 0;
void main(void)
{
   Device_init();
   Device_initGPIO();

//   GPIO_17_CANRXB
//   GPIO_12_CANTXB
   GPIO_setPinConfig(GPIO_17_CANRXB);
   GPIO_setPinConfig(GPIO_12_CANTXB);
   CAN_initModule(CANB_BASE);
   CAN_setBitRate(CANB_BASE, DEVICE_SYSCLK_FREQ, 500000, 16);

   CAN_setupMessageObject(CANB_BASE, TX_MSG_OBJ_ID, 0x01,
                          CAN_MSG_FRAME_STD, CAN_MSG_OBJ_TYPE_TX, 0,
                          CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);

   CAN_startModule(CANB_BASE);

   EINT;

   while(1){

       CAN_sendMessage(CANB_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, (uint16_t)data);
       while(((HWREGH(CANB_BASE + CAN_O_ES) & CAN_ES_TXOK)) ==  CAN_ES_TXOK)
       {
       }
       data++;
   }
}