接下来,我想的是通过28388D的CANA接收来自STM32的CAN口的数据,研究了一下例程,觉得can_ex5_transmit_receive.c是最适合的。
在例程中,看到
When the TRANSMIT define is selected, the CAN Controller acts as a Transmitter and sends data to the second CAN Controller connected
externally.
If TRANSMIT is not defined the CAN Controller acts as a Receiver and waits for message to be transmitted by the External CAN Controller.
然后,我在原来例程基础上,将TRANSMIT的宏定义注释了。我对例程中注释的理解是,把TRANSMIT注释掉之后,例程就变成接收的功能了。(不知道是不是我想的不对)
硬件连接上,CAN收发器模块接到28388D的CANB,然后收发器的CANH和CANL,接到STM32的CANH和CANL,然后由STM32通过CAN向外发送数据。
这样注释后,debug完成,我在CCS中观察rxMsgData的数据变化,却始终是0。
我自己感觉,可能是对例程的理解错误
特来请教!
谢谢
Susan Yang:
user6355257 说:然后,我在原来例程基础上,将TRANSMIT的宏定义注释了。我对例程中注释的理解是,把TRANSMIT注释掉之后,例程就变成接收的功能了。(不知道是不是我想的不对)
是的,您的理解是正确的
请问您是否有注意到下面的note:(您是否有使用transceiver)
//! \note CAN modules on the device need to be connected to via CAN //!transceivers. //! //! \b Hardware \b Required \n //!- A C2000 board with CAN transceiver
,
@vince:
好的,我的硬件上我给28388d评估板连接了一个CAN收发器(接到了CANB),然后连接到了STM32的CAN收发器上。28388D的CANA悬空。
我想实现的功能是将28388D当做是接收数据端,STM32作为发送数据端
这样的话,28388D的transceiver应该用不上吧谢谢
,
Susan Yang:
“我的硬件上我给28388d评估板连接了一个CAN收发器”
transceiver按照例程的意思就是CAN收发器。
所以您现在是28388和STM32都连接了CAN收发器,且两者是相连的?
//! \b External \b Connections \n
//!- ControlCARD CANA is on GPIO37 (CANTXA) and GPIO36 (CANRXA)您现在使用是control card?是否有使用示波器来观测CAN的通信波形?若是可以的话,请您上传一下,谢谢
,
@vince:
所以您现在是28388和STM32都连接了CAN收发器,且两者是相连的?回复:对的,是这样连接的。
硬件使用的是,28388D的评估板。
示波器上,测STM32的CANH和CANL,是正常的差分信号的波形。
STM32发送数据正常,28388D这边接收数据的数组rxMsgData没有显示。
应该还是can_ex5_transmit_receive.c例程没有改好的原因,我再看看程序。
谢谢
,
@vince:
您好,数据传输接收过程已调通,谢谢,辛苦了
,
@vince:
多谢您的帮助
,
Susan Yang:
很高兴您能解决问题!后续有其他问题欢迎随时发新帖!
,
@vince:
好