正在学习 STM32F446RE-NUCLEO 板,在两个 nucleo 板之间进行 CAN 通信测试。 已经在一个 Nucleo 上配置了 CAN32 外设作为发射器,另一个作为接收器。 发射机: 已经在一块板上配置了 CAN1 外设 (PA11--Rx,PA12--Tx),使用的 can 收发器MCP2551.. 用 CubeMX 将 APB 时钟设置为 25MHz,并使用 CAN 位定时将波特率设置为 500kbps 在发射机中,工作正常. 数据寄存器 TDT0R 正确显示 DLC 位,TDL0R 和 TDH0R 正确显示数据字节。 ESR 寄存器显示 TEC 位为 128(这意味着发射器错误),LEC 位显示 3(表示确认错误)
接收器: 问题可能出在接收器这边. MSR 寄存器中的 RXM 位为低电平,RI0R 寄存器显示一些随机值,RDT0R(Stdid,Dlc 位为垃圾),RDL0R(较低的数据字节也是垃圾),RDH0R(较高的数据字节也是垃圾)
是不是应该调用其他接受函数来更新寄存器??? 另外:硬件工作正常.通过查看串口监视器和指示灯闪烁来确认接收器工作正常。 在示波器上能看到can总线数据。 所以问题出在接收机的 CAN 控制器???
|