- 博客(18)
- 收藏
- 关注
原创 EtherCAT从站EEPROM数据配置说明
但是芯片上电的时候去读取外挂的ESC芯片的时候发现卡在了读取ID=0x87654321这一步。ESC芯片在初始化的时候,会读取Eeprom->ConfigDara的前16个字节用于配置上面的设置,比如Eeprom->ConfigDara = 800E00CC8813f000000000800000。或者在读取数据的时候发现读取出来的数据不对,比如在读取ID的时候返回的值对应不上。一般是芯片没有正常复位导致的。0x80会用于配置ESC的0x0140寄存器。0x0E会用于配置0x0141寄存器。
2026-06-08 10:03:03
231
原创 EtherCAT从站添加SDO对象字典
当在SSC tool中使能参数时,会生成默认的cia402例程时。此时对象字典的添加不再支持再通过导入excel的方式完成。需要在原有基础上手动修改xml和从站代码。如何在CiA402协议的基础上面添加SDO访问呢?通过测试验证SDO功能的添加是比较简单的,下面将以0x6075为例演示一下操作过程:0x6075是CiA402协议中的对象字典。在CST模式下,主站会去通过SDO去读取0x6075的内容,通过0x6071的值就可以换算得到电机的控制的电流有效值。
2026-06-07 19:54:47
46
原创 CANopen协议学习(一)
CAN是通过CAN_H、CAN_L之间的电平差来判断“显性电平”和“隐形电平”。显性电平:CAN_H和CAN_L的电压差为2V隐形电平:CAN_H和CAN_L的电压差为0V一般情况下使用差分信号去做传输都是为了抗干扰,当有干扰的时候,CAN_H和CAN_L的干扰的变化都是一样的,最终他们的电压差的值会不变。比如RS485也是差分信号传输。不要理逻辑0和1,只需要记住显性电平电位差是2V,隐性电平电位差是0V即可。CAN协议的波特率与传输距离有关,可以根据实际的应用场景去选择自己的波特率。
2026-06-06 02:13:55
216
原创 TwinCAT实时性网卡配置
可能是TwinCAT版本导致的,之前我在安装TC31-Full-Setup.31.4024.10版本的时候遇到过这个问题。我是通过删除TwinCAT,然后重新安装4024.62版本解决这个问题的。下面是我在配置实时性网卡过程中遇到到的一些问题,其实不同版本的Window电脑,不同环境之间存在差异,会出现各种不兼容问题导致实时性网卡无法使用。下面是对应的Intel网卡驱动安装下载的位置,好像是可以识别你的网卡,然后自动给你安装对应的驱动。TwinCAT对网卡是有要求的,一般情况下会要求重启,重新启动即可。
2026-06-05 21:44:42
206
原创 STM32CubeMx 配置高级定时器TIM1刹车实验
目前公司的关节模组基本功能开发完成了,最近在实现过流保护的功能,原本是使用外部中断去触发一个中断,然后我在中断去关闭PWM的输出。目前测试的结果是刹车引脚处于低电平的时候能关闭PWM的输出,Automatic Output State使能了后,如果刹车引脚恢复高电平了,会自动恢复PWM的输出。从上面的图片可以看处理,CH2通道(高侧的PWM),关闭输出的时候并非是完全的低电平,而且2.0V左右,这就很奇怪了。目前我的实验是在上一篇的基础上面去做的,验证一下STM32CubeMX的不同配置会带来什么结果。
2026-05-27 20:42:44
780
原创 TwinCAT卸载教程
链接: https://pan.baidu.com/s/1mOo7bHQCsue3LCSMFgA6Dg?pwd=ujjq 提取码: ujjq。安装TwinCAT-Package-Manager-Setup1.0.545.0.exe的时候需要使用管理员身份进行安装。这里电脑会自动重启,然后开机显示下面内容代表着TwinCAT卸载完成。安静等待,可能时间比较久,遇到提示全部输Y。通过网盘分享的文件:uninstallTwinCAT。--来自百度网盘超级会员v5的分享。注意根据实际情况修改你的目录。
2026-05-26 22:16:49
456
原创 EtherCAT DC同步Sync0_Isr/PDI_Isr中断问题
前几天在LAN9252上面移植了FSMC接口,公司打的开发板到了,通过测试后发现Sync0_Isr中断在DC同步周期内被触发了两次,在硬件上面飞了IRQ和SYNC的引脚使用示波器抓取。发现LAN9252的IRQ中断被触发了两次,通过对代码调试发现,在PDI_Isr触发了Sync0_Isr函数的执行。解决办法就是对AL Event Mask Register(0x204)进行屏蔽。
2026-05-23 20:11:55
47
原创 STM32CubeMx+LAN9252移植FSMC
之前写了一篇LAN9252移植的文档,是基于SPI接口的,但是在电机端的代码开发差不多的时,上了EtherCAT通信发现使用SPI与LAN9252进行通信带来的结果就是SPI的通信速率太慢了,MainLoop()函数在主循环中执行的时间在340us,即使后续进行了优化,时间仍然有150us。原因是MCU与LAN9252进行一次通信时候会涉及到8~9个字节通信,即使SPI的速率很高,有几十M,但是一次通信仍然花费了10us左右,而且MainLoop中会涉及到十几次读写操作,而且必须是阻塞读取。
2026-05-19 23:44:56
933
原创 Vivado 17.4 安装教程
这里的提示窗口意思是提醒你现在最新的版本是25.2。然后再点击右下角的Next进入下一步。百度网盘资料:https://pan.baidu.com/s/1B6ZtUPwlqzQ8Yyca1kqpkA?根据自己的需求修改安装路径即可,不一定需要安装在C盘,安装路径不能有中文存在。安装完成后会弹出许可和Matlab版本的支持,这里我们全部跳过。这里是一些芯片型号和开发工具的选择,这里我们全部点上对勾,然后点击Next。到这里已经完成了Vivado的安装了。这里全部点上对勾,然后点击Next。
2026-04-15 00:00:00
273
原创 滑动均值滤波算法
滑动均值滤波算法的实现原理非常简单。每次执行模拟量采集的时候去更新数组的数据,然后对数组进行求平均值。在FOC开发过程中涉及到母线电压和温度传感器数据的滤波算法,特意记录一下这篇文档。
2026-04-13 09:43:50
743
原创 FOC IF/VF强拖启动
从前面的分析中可以看到,我们需要先设计好强拖的曲线,大概意思就是强拖加速的过程中,各个周期的角度θr的变化。强拖启动后,当速度达到一定的条件的时候。垂直d轴的时候是最好的,但实际的过程中往往无法实现,要么就是 Iq 与 d轴 的夹角小于/大于 90°,这个Iq的大小是一个待调试的值,不能过大和过小。强拖的目的一般都是让电机达到我们期待的速度,这样电机具有强明显的反电动势,方便无感算法进行闭环控制。在进行强拖之前,需要进行转子预定位操作,让转子的d轴与U相重合,这样进行强拖的时候,强拖的角度才是正确的。
2026-04-11 02:47:32
490
原创 IC-MU128磁编码器芯片通信验证
该芯片是使用BISS或者SPI去通信的。由于我使用的是STM32作为MCU,所以只能使用SPI去通信。从手册上面了解到的是该款芯片是只支持SPI0和SPI3模式。目前的话我使用的是软件SPI去验证通信的,没有使用硬件SPI的原因很简单,硬件工程师那边画错了。由于目前我还不是很熟悉这款芯片,等后面供应商过来校准后,开发更详细的资料后,后续我还会再写一篇文档补充,目前只是记录一下如何验证该款芯片的通信。目前和供应商那边沟通的情况是,SPI通信波特率小于10Mbit即可,具体多少手册上面也没有写。
2026-03-28 09:53:12
205
10
原创 STM32CubeMx 软件模拟SPI四种模式
目前的话一般是推荐使用基本定时器去作为延时函数的计数,从表格中我们了解到的是基本定时器分别是TIM6、TIM7,分别是挂载在APB1上面的。模式0:CPOL=0,CPHA =0 SCK空闲为低电平,数据在SCK的上升沿被采样。模式1:CPOL=0,CPHA =1 SCK空闲为低电平,数据在SCK的下降沿被采样。模式2:CPOL=1,CPHA =0 SCK空闲为高电平,数据在SCK的下降沿被采样。模式3:CPOL=1,CPHA =1 SCK空闲为高电平,数据在SCK的上升沿被采样。
2026-03-25 13:41:06
262
原创 STM32CubeMx 配置三相互补PWM + 死区时间计算
在使用STM32作为控制器去开发电机FOC的时候,往往需要配置三相互补PWM的死区时间,如何快速确认死区时间的范围和配置呢?
2026-03-12 15:44:49
672
原创 [EtherCAT] LAN9252移植保姆级教程+CiA402协议
singleDoc# 《LAN9252从站移植记录》这是我写的第一篇文档,希望对想移植LAN9252的同学有帮助。
2026-03-03 17:29:28
436
24
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅