许多STM32芯片组支持1或2通道CAN PIN输出。 是否有用于STM32的CAN总线库直接与诸如MCP2551的CAN收发器连接?但是,CAN收发器是什么都没有关系。
答案 0 :(得分:3)
CAN收发器只是一个高速降压转换器。 (基本)
CAN协议可在各种电压范围内工作。 MCP2551是一套适用于12V和24V系统的CAN收发器。带有externally-controlled slope
之类的有助于物理层的附加功能,以减少RFI排放,detection of ground fault
,voltage brown-out protection
等。
它与CAN逻辑无关。只是为了帮助您解决裸露的物理层。
回答您的问题:
按照RishabhHardas的建议,请使用STM32通过CubeMx提供的HAL库。
使用CubeMx
这是ST-Micro提供的软件,可帮助您为任何外围应用程序设置样板代码。
您也可以在Cube中查看STM提供的示例项目。这将使您开始了解STM32上的CAN。
STM32Cube_FW_F4_V1.9.0 \ Projects \ STM324xG_EVAL \ Examples \ CAN \ CAN_Networking
设置好之后,您可以通过包含标题来调用HAL_CAN_Transmit()
和HAL_CAN_Receive()
。
查看关于STM32社区的this讨论。
答案 1 :(得分:0)
对于软件,请在Github上查找CANtact开源项目。它是STM32F042的一种实现。我不得不修改该项目以在Atollic下构建它,但是它并不太难并且可以正常工作。它通过USB上的虚拟COM端口提供SLCAN类型的接口,这非常方便快捷。
STM32F103(Bluepill)(Google“ lawicel-slcan”)也有CAN代码,但是该芯片不方便,因为您不能同时使用CAN和USB(它们共享RAM缓冲区),因此如果如果需要CAN,则将没有USB,而通过UART路由CAN消息将严重限制带宽。如果您的整个应用程序都在STM32上运行,那可能没问题。