【关节电机专栏】ESP32-S3控制大然电机

news/2025/1/9 0:39:37/文章来源:https://www.cnblogs.com/FBsharl/p/18660819

如何进行CAN初始化?

以下是ESP32-TWAI-CAN库的CAN总线初始化函数(begin())

bool begin(TwaiSpeed twaiSpeed = TWAI_SPEED_500KBPS, int8_t txPin = -1, int8_t rxPin = -1,uint16_t txQueue = 0xFFFF, uint16_t rxQueue = 0xFFFF,twai_filter_config_t*  fConfig = nullptr,twai_general_config_t* gConfig = nullptr,twai_timing_config_t*  tConfig = nullptr);

主要需要知道以下数据:

  • CAN的引脚
  • 电机驱动板对应的比特率

如何实现发送 CAN 消息?——第一步:明确帧格式

有的电机(大然电机)是标准帧,有的电机(小米电机)是扩展帧,下面分别给出举例:

/*小米电机驱动器通信协议及使用说明 电机通信为 CAN 2.0 通信接口,波特率 1Mbps,采用扩展帧格式,如下所示:数据域          29 位 ID            8Byte 数据区大小 Bit28~bit24 bit23~8 bit7~0     Byte0~Byte7描述 通信类型 数据区 2 目标地址     数据区 1*/

其发送帧的函数如下:

//底层的CAN发送指令,小米电机采用扩展帧,数据帧的格式
static void CAN_Send_Frame(can_frame_t* frame)
{CanFrame obdFrame = { 0 };uint32_t id_val,data_val,mode_val;uint32_t combined_val;obdFrame.extd = 1;              //0-标准帧; 1-扩展帧 小米电机采用扩展帧obdFrame.rtr = 0;               //0-数据帧; 1-远程帧obdFrame.ss = 0;                //0-错误重发; 1-单次发送(仲裁或丢失时消息不会被重发),对接收消息无效obdFrame.self = 0;              //0-不接收自己发送的消息,1-接收自己发送的消息,对接收消息无效obdFrame.dlc_non_comp = 0;      //0-数据长度不大于8(ISO 11898-1); 1-数据长度大于8(非标); 数据长度为标准长度//拼接IDid_val = frame->id;data_val = frame->data;mode_val = frame->mode;combined_val |= (mode_val << 24);combined_val |= (data_val << 8);combined_val |= id_val;obdFrame.identifier = combined_val; //普通帧直接写id,扩展帧需要计算。11/29位IDobdFrame.data_length_code = 8;      //要发送的字节数for (int i = 0; i < 8; i++){obdFrame.data[i] = frame->tx_data[i];}ESP32Can.writeFrame(obdFrame);
}

  与之相对,大然电机采用标准帧(帧信息为1字节,帧ID为两个字节):

 

第二步:发送有实际效用的数据帧——查看电机驱动板《指令对照表》

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866173.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.2.7 PMU设计中常见问题的分析解答

PMU设计中常见问题的分析解答 在 PMU(电源管理单元)设计中,常见的问题通常涉及电源性能、热管理、效率、安全性等多个方面。以下是一些常见问题及其分析与解答: 1. 输出电压不稳定 问题:PMU 的输出电压无法达到预期,存在较大的波动。 原因分析:负载变化:当负载发生变化…

1.2.6 PMU电源的散热处理及主要事项

PMU电源的散热处理及主要事项 PMU(Power Management Unit,电源管理单元)作为电子设备中实现电源调节和转换的重要组件,其散热处理至关重要,因为过高的温度会影响性能、可靠性和寿命。以下是 PMU 电源的散热处理方法及主要事项。 一、PMU 电源的散热处理方法选择合适的封装…

1.2 PMU

PMU PMU(Power Management Unit,电源管理单元)是一种集成电路(IC),用于管理和调节电子设备中的电源和电压供应。PMU 的设计旨在提高能源利用效率,减少能量损耗,并确保设备在各种操作条件下的稳定运行。以下是关于 PMU 的详细介绍,包括其功能、组成部分、工作原理和应用…

1. 电源模块

电源模块 电源模块是将电源转换、调节和管理功能集成在一个单元中的电子设备。它们通常用于提供电力和接口,确保电子设备在运行过程中获得稳定的电源供应。以下是关于电源模块的详细讲解,包括其类型、特性、应用等。 1. 什么是电源模块? 电源模块是集成多个组件(如变压器、…

第3章 命名准则

第3章 命名准则 1 大小写约定 1 标识符的大小写规则​DO​: 命名空间 、 类型 、 成员 和 泛型参数 ,使用 PascalCasing 风格命名。‍​DO​​:参数,使用 camelCasing 风格命名。‍标识符 大小写 示例命名空间 Pacal namespace System.Security类型 Pacal public class S…

0. PCB模块

PCB模块 PCB(印刷电路板)模块是在电子设计和应用中非常常见的组件。它们是将电路功能集成到一个统一单元中的关键部分。下面,对 PCB 模块进行详细讲解,包括其定义、类型、应用和设计考虑等方面。 1. 什么是 PCB 模块? PCB 模块是指在印刷电路板上实现特定功能的预制电路板…

MarkDown使用方法

Markdown学习 标题 三级标题 四级标题 字体 Hello,World! Hello,World! Hello,World! Hello,World! 引用好好学习,天天向上分割线图片超链接 [点击跳转到csdn](CSDN - 专业开发者社区) 列表A B CA B C表格名字 性别 生日张三 男 1997.1.1代码 public

1.5 电源模块散热的处理

掌握电源模块散热的处理 电源模块的散热设计对于确保电子设备的性能和可靠性至关重要。由于电源模块在转换电能的过程中会产生热量,如果不合理处理散热,可能会导致模块过热,从而影响其工作效率、使用寿命,甚至导致系统故障。以下是电源模块散热处理的一些关键原则和方法: …

1.4 覆铜宽度和电流大小之间的关系,掌握过孔大小与数量与电流大小的关系

覆铜宽度和电流大小之间的关系,掌握过孔大小与数量与电流大小的关系 在 PCB(印刷电路板)设计中,覆铜宽度和过孔的大小与电流处理能力之间的关系是非常重要的。这些因素直接影响到电路的安全性、性能和热管理能力。以下是关于覆铜宽度、电流大小、过孔大小与数量与电流之间关…

1.3 什么是反馈电路, 反馈的摆放方法及布线取样点的设置

什么是反馈电路, 反馈的摆放方法及布线取样点的设置 反馈电路的概念 反馈电路是一种通过输出信号的信息返回到输入端,以调节或控制电路性能的系统。在电子电路中,反馈可以用来增强系统的稳定性、改善线性度、提高增益、降低失真等。反馈电路可以分为两种主要类型:正反馈:输…

解决方案 | aardio 实现界面自动缩放,控件随之变换

只需要把所有控件设置为 自适应大小true,固定边距禁用全部即可。网上说的花里胡哨,没个准信

Vue 组件内守卫

1、顺序 2、位置 组件内部 3、语法 beforeRouteEnter 通过路由规则,进入该组件时被调佣 beforeRouteLeave通过路由规则,离开该组件时被调用 注意:通过组件引入不被调用beforeRouteEnter (to, from, next) {// ...console.log(beforeRoueEnter)next() }, beforeRouteLeave (t…