本文主要是介绍Arduino-ESP32的CAN波特率设置为1M代码,不用改底层。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前面调CAN的时候,发现CAN的实际的波特率是设置的波特率的一半。然后还去看手册,推公式,改底层库的代码。后面发现不用这么麻烦,换一下使用的库和配置函数就行。使用CAN.h头文件的配置函数就会出现CAN的实际的波特率是设置的波特率的一半这个问题。
使用CAN.h头文件包含的库的函数配置,CAN实际波特率是配置波特率的一半
#include <CAN.h>#define CAN_TX 26
#define CAN_RX 27void setup()
{
Serial.begin(115200,SERIAL_8O1);//奇校验
CAN.setPins(CAN_RX,CAN_TX); //设置CAN引脚if(!CAN.begin(1000E3)) //配置1M实际只有500K{Serial.println("Starting CAN failed !");}
}
修改库,换写法重新配置CAN。先下载 ESP32-TWAI-CAN 这个库。然后配置CAN,配置多少波特率实际就是多少波特率
#include <ESP32-TWAI-CAN.hpp>#define CAN_TX 26
#define CAN_RX 27void setup()
{Serial.begin(115200,SERIAL_8O1);//奇校验//CAN.setPins(CAN_RX,CAN_TX);ESP32Can.setPins(CAN_TX, CAN_RX);//设置CAN引脚// You can set custom size for the queues - those are defaultESP32Can.setRxQueueSize(50); //设置CAN接收缓冲区大小ESP32Can.setTxQueueSize(50); //设置CAN发送缓冲区大小ESP32Can.setSpeed(ESP32Can.convertSpeed(1000));//设置波特率为1M// You can also just use .begin()..if(ESP32Can.begin()) {Serial.println("CAN bus started!");} else {Serial.println("CAN bus failed!");}
}
这篇关于Arduino-ESP32的CAN波特率设置为1M代码,不用改底层。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!