调试 HK32F103CBT6 的软件,发觉总有 CAN 初始化失败。
遂查找原因。比较之前一个 HK32 软件,找到了 STM32CubeMX
导出的驱动程序的版本差异。
又找到 STM32Cube_FW_F1_V1.8.4 的发行注记(Release Notes)
里对于 CAN 驱动程序写到:
Update CAN Initialization sequence to set “request
initialization” bit before exit from sleep mode.
意思是,HAL_CAN_Init() 初始化时,先“请求初始化”
再退出睡眠模式。这在 STM32F103 或许没问题(价格太贵了,
我没测试),但会让 HK32F103CBT6 初始化失败。
在前一个 V1.8.3 版尚无此问题。此版的函数里先退出
睡眠模式再请求初始化。
国产 XX32 与 STM32 在设计上的差异会逐渐暴露出来。
国内 fabless 半导体公司这种“搭便车”的行为难免出些问题。
--
FROM 111.196.241.*