尊敬的团队:
当我的客户在两个80引脚和60引脚芯片(CAN:GPIO4、GPIO5)上测试 CAN_ex1_loopback 例程时、他们发现屏蔽以下语句后、该程序可以在80引脚芯片上正常运行、但在60引脚芯片上无法正常运行。 发生错误帧。
但是、如果使用原始程序、两个电路板通常都可以发送 CAN 消息、而不会出现错误帧。
// txMsgData[0] = 0x01; // txMsgData[1] = 0x02;
修改例程的位置:
1.在 board.c 中修改:CAN 引脚+发送8字节+ 250K 波特率。
2.芯片使用内部晶体振荡器 OSC2、配置如下:
//***************************************************************************** // // Defines related to clock configuration // //***************************************************************************** // // 20MHz XTAL on controlCARD. For use with SysCtl_getClock(). // #define DEVICE_OSCSRC_FREQ 10000000U // // Define to pass to SysCtl_setClock(). Will configure the clock as follows: // PLLSYSCLK = 20MHz (XTAL_OSC) * 30 (IMULT) / (2 (REFDIV) * 3 (ODIV) * 1(SYSDIV)) // #define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_OSC2 | SYSCTL_IMULT(30) | \ SYSCTL_REFDIV(1) | SYSCTL_ODIV(3) | \ SYSCTL_SYSDIV(1) | SYSCTL_PLL_ENABLE | \ SYSCTL_DCC_BASE_0) // // 100MHz SYSCLK frequency based on the above DEVICE_SETCLOCK_CFG. Update the // code below if a different clock configuration is used! // #define DEVICE_SYSCLK_FREQ ((DEVICE_OSCSRC_FREQ * 30) / (1 * 3 * 1)) // // 25MHz LSPCLK frequency based on the above DEVICE_SYSCLK_FREQ and a default // low speed peripheral clock divider of 4. Update the code below if a // different LSPCLK divider is used! // #define DEVICE_LSPCLK_FREQ (DEVICE_SYSCLK_FREQ / 4)
此外、测试发现在另一个48引脚芯片上测试代码的效果更差、偶尔只有一帧正确的消息。
这是为什么?
此致