参考 "Can_Example_S32K344 "示例项目。
CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE "变为 "STD_ON","Can_43_FLEXCAN_MainFunction_Read" "被禁用,因此无法接收 CAN 信号。
Can_43_FLEXCAN_MainFunction_Read_CanMainFunctionRWPeriods_0" 未启用。
我已经安装了 3 个频道,“FLEXCAN_0”、“FLEXCAN_2” 和 “FLEXCAN_5”。
附带的是 "FLEXCAN_0 "的 "Can_43_FLEXCAN "设置屏幕。
你好,@toru88、
应该没有问题。传输时,请确认波特率和采样点是否设置正确。您使用的是两块板还是 CAN 分析仪工具?
社区中有一些 CAN 示例,请参考:
致以最诚挚的问候,
Julián
你好,胡利安
由于无法更改到版本 6.0,我能够通过执行以下定义进行构建。
这个答复有问题吗?
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_0 CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_0
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_1CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_1
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_2 CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_2
#defineCAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_3 CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_3
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_4CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_4
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_5 CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_5
我正在尝试让它工作,但无法发送/接收 CAN。
我参考 “Can_Example_S32K344” 进行设置。
我认为如果取消选中 "Can Loop Back Mode(可回环模式)",就可以从外部发送/接收 CAN 数据。
CAN 数据接收到 MCU 的终端。
是否有任何在 CAN 总线上发送和接收帧的示例代码?
致以最诚挚的问候,
toru88
你好,@toru88、
你说得对。我测试了您的项目,没有生成主函数 RW 周期的正确定义。但是,这个问题似乎已在6.0.0版本中修复(我目前正在使用RTD代码包)。您能将 RTD 更新到新版本吗?
如果没有,只需编辑Can_43_FLEXCAN_Cfg.h即可。文件,如下所示。
从这里:
/**
* @brief Period for cyclic call of Main Function Read/Write
*/
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_0 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_1 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_2 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_3 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_4 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_5 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE (STD_ON)
#define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_READ (STD_ON)
对此
/**
* @brief Period for cyclic call of Main Function Read/Write
*/
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_0 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_1 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_2 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_3 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_4 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_WRITE_PERIOD_CanMainFunctionRWPeriods_5 (0.001F)
#define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE (STD_ON)
#define CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_READ (STD_ON)
你好,胡利安
我有同样的设置,但结果不同。
无法生成 RWPeriods_0/1/2。
附上设置屏幕截图。
我还附上了正在开发的 S32K 项目。
请检查 "AGV_CTRL.mex"。
用户程序已删除。
S32K Design Studio for S32 Platform 的版本为 "Verison 3.5"。
致以最诚挚的问候,
toru88
你好,@toru88、
当仅定义了 1 个 RW 周期时,使用单个函数进行轮询:
void Can_43_FLEXCAN_MainFunction_Read(void);
另一方面,当定义多个周期时,会针对不同的时间要求定义多个轮询函数:
void Can_43_FLEXCAN_MainFunction_Read_CanMainFunctionRWPeriods_0(void);
void Can_43_FLEXCAN_MainFunction_Read_CanMainFunctionRWPeriods_1(void);
// etc.
但是,您还需要在 CanHardwareObject 容器中正确配置 CAN 实例各自的 RWperiod,否则,在生成代码时,将不会生成 RWPeriods_0/1/2/3:
致以最诚挚的问候,
Julián
你好 Julián_AragónM
感谢您的答复。
感谢您的回复。
CAN_43_FLEXCAN_MAINFUNCTION_MULTIPLE_WRITE "变为 "STD_ON","Can_43_FLEXCAN_MainFunction_Read "从编译目标中删除。
以下定义尚未完成。
- CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_0
- CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_1
- CAN_43_FLEXCAN_MAINFUNCTION_READ_PERIOD_CanMainFunctionRWPeriods_2
由于未设置该定义,因此无法启用以下功能。
因此,在 Main 中调用的代码中会出现编译错误。
-can_43_flexcan_mainfunction_read_canMainFunctionrwperiods_0-can_43_flexcan_mainfunction_read_canMainfunctionrwperiods_1-can_43_flexcan_mainfunctionrwperiods_read_c
anMainfunctionrwp
该代码尚未运行,无法版本。
顺祝商祺!
toru88
你好,@toru88、
您能提供更多信息吗?您是否在 FlexCAN 接收方面遇到问题?您提到""Can_43_FLEXCAN_MainFunction_Read" 已禁用,因此无法接收 CAN。",您的主代码中是否无法读取帧?
如果可能,请分享您的项目(或 main.c文件),这样我就能了解你的日常工作是什么了。
此外,您还可以参考 RTD 中的示例。它们与本培训演示中显示的相同:S32K3xx 通信模块:带有 rtd 和低级驱动程序的 flexcan。
这些项目配置为环回,因此需要启用正常/用户模式并初始化收发器输出引脚(CAN_H& CAN_L)。
还有一些社区帖子提供了一些实例:
致以最诚挚的问候,
Julián