- 博客(18)
- 收藏
- 关注
原创 Srec_cat部分使用说明
1.-crop 裁剪格式:-crop 起始地址 末尾地址举例:-crop 0x00003000 0x000031002.-output 输出格式:-output 文件名 文件格式举例:-output output.hex -intel3.-fill 填充格式:-fill 填充数据 填充起始地址 填充末尾地址举例:-fill 0xff 0x00003000 0x000031004.-CRC32_Little_Endian 计算前级文件的常规CRC32并以小端输出。
2024-06-04 20:11:38 611
原创 CAN基础介绍
显性电平--逻辑0隐性电平--逻辑1CAN空闲状态时,总线上为显性电平状态。二、数据帧介绍(最常用也最常见)(1) 帧起始。表示数据帧开始的段。(2) 仲裁段。表示该帧优先级的段,即ID+RTR。(3) 控制段。表示数据的字节数及保留位的段,即IDE+DLC。(4) 数据段。数据的内容,一帧可发送0~8个字节的数据。(5) CRC段。检查帧的传输错误的段。(6) ACK段。表示确认正常接收的段。
2024-04-19 22:54:26 754 1
原创 关于无符号数相减计算
a-b = a(补码)+-b(补码) = 1111 1111 0000 0010 =0xff02。-b(反码) = 1111 1111 0000 0000 [负数反码除符号位全取反]a(补码) = 0000 0000 0000 0001 [正数补码与原码相同]-b(补码) = 1111 1111 0000 0001 [负数补码为反码加1]CPU中只有加法器,因此,a-b会被看做a+(-b),即a的补码加-b的补码。保存在u16中就为0xff02 = 65282,若解读为负数则为 -32514。
2023-03-08 23:05:44 1634
原创 STM32Flash的读写处理
执行读写逻辑为若Flash中读取为空,则写入我们需要的初值,否则读出数据赋给我们的变量。因为写入时需要擦除才可以写入,而单片机有擦写寿命,因此我们采用擦写一定次数(几万次一般都可以接受,芯片书上应该是10万次),然后用记忆页的后一页进行读写以保证长期频繁的擦写使用,这里让单片机的最后3K供记忆功能使用。芯片为STM32051,因此一个字为4个字节,每个字节占一个地址,芯片Flash大小64K。采用STM32库中的擦写库函数进行基本的擦除操作,读写通过指针实现。.........
2022-08-13 18:02:39 1013
原创 ASC制动效果成因个人理解
在使用电机进行驱动的场合中,许多场景需要利用电机的发电能力进行动能回收以及电子制动的功能。我将从dq轴上进行一个个人对这种现象的原理分析,若有谬误还请大家指正。(这里不再对Clark,Park变换进行详细介绍,这里采用的等幅值变换)我们知道将电机的三相短接,电机将会有一个比较大的阻力,这种状态我们称之为ASC(Active short circuit主动短路),工程上常常利用这种状态进行系统保护以及制动与动能回收,基本原理就是三相短接的电机线圈由于磁通变化(楞次定律)形成对应的相反磁场阻碍运动,并产生相应感
2022-07-12 10:13:00 3560 2
原创 STM32TIM定时器在FOC中一些应用的理解
目前调试遇到的芯片有两种驱动逻辑:有效逻辑为(1)上高下低(2)上高下高(这里有效指输出高电压打开MOS)用TIM1的通道1,2,3的OCx/OCxN来输入三相对应的驱动芯片引脚控制全桥的通断。将以通道1为例,介绍一下U相的的驱动配置。首先明确的是,对应逆变全桥上,上下桥的波形一定是互补的,这是SVPWM算法决定的,因此针对不同驱动芯片的驱动逻辑需要采用不同的驱动配置。(1)上高下低的驱动逻辑根据驱动芯片的芯片上桥信号输入为高电平有效,下桥芯输入为低电平有效,我们期望的上下桥互补波形对应的芯片输入波形就如下
2022-06-13 18:03:47 1839
原创 以STM32为例简述 IAP升级
以128 Kbytes的SRAM为例,地址范围是 0x2000 0000 --0x2001 FFFF;(4096*128-1=1FFFF)堆栈指针(SP) 必须在 0x2000 0000 -- 0x2001 FFFF 这块区域,所以在校验顶栈地址是否合法时就校验其地址是否超过合法地址即可,所以 SP & 0x2FFE 0000 == 0x2000 0000时说明SP在合法范围内。假如是 64 Kbytes 的 RAM,地址Region为 0x2000 0000 -- 0x2000 FFFF,
2022-04-28 15:45:16 1442 2
原创 485 Modbus协议程序实例(DMA+缓存数据处理)
#define TX_MODE (GPIOB->ODR |= GPIO_Pin_8)| (GPIOC->ODR |= GPIO_Pin_14)#define RX_MODE (GPIOB->ODR &= ~GPIO_Pin_8)| (GPIOC->ODR |= GPIO_Pin_14) word_def UartStateAdr; #define FunctionReceiveFlag UartStateAdr.bit.b5//功能码.
2022-03-15 08:59:26 1630
原创 485 Modbus协议程序实例(DMA+串口闲中断接收/串口中断发送)
#define TX_MODE (GPIOB->ODR |= GPIO_Pin_8)| (GPIOC->ODR |= GPIO_Pin_14) #define RX_MODE (GPIOB->ODR &= ~GPIO_Pin_8)| (GPIOC->ODR |= GPIO_Pin_14) word_def UartStateAdr; #define UartStartBusyFlag UartStateAdr.bit.b3//接收...
2022-03-08 11:12:40 8014
原创 485 Modbus协议程序实例(串口中断接收/发送)
#define TX_MODE (GPIOB->ODR |= GPIO_Pin_8)| (GPIOC->ODR |= GPIO_Pin_14) #define RX_MODE (GPIOB->ODR &= ~GPIO_Pin_8)| (GPIOC->ODR |= GPIO_Pin_14) word_def UartStateAdr; #define ReceiveVerifyFlag UartStateAdr.bit.b3//接收数据需求校验标.
2022-02-11 18:09:09 6160
转载 初步理解弱磁
若想深入了解电机拖动的原理和关系,需要透彻理解下图的直流电动机公式:1、弱磁调速,都是在基速以上的调速过程,即此时的反电动势达到额定值。由公式2 可知此时E和Ce都不可变,若想n上升,只有Φ下降,如此便实现了弱磁升速。并非反电动势降低阻力减小。2、在没有磁场的情况下,根据公式3也就没有电磁转矩,在阻转矩的作用下,即使仅剩电机本身的摩擦阻力,也会令电机逐渐停止转动。但实际情况是:即使没有了励磁电流,由于电机本身剩磁的存在,都会有电磁转矩输出,当其大于当前的阻转矩(负载过轻或失去负载)时,转速就会逐
2021-10-29 20:45:20 6204
原创 如何通过HEX文件的地址信息找到对应源码的函数位置(MDK5)
1.用NotePad++打开HEX文件,每行地址开头就是地址信息。2.打开HEX对应源码的文件夹,找到output文件夹(就是一般生成HEX的文件夹)打开对应.map后缀名的文件,拖入MDK5中即可查看。3.文件向下拉拉到这个位置,红框位置就是对应保存的地址,再向下拉就能找到你在源文件中定义的函数保存的位置。主要用于源文件的HEX与他人提供的HEX有较少区别时,不知道是哪里修改了参数时,用Beyond Cpmpare软件找出不同的数据位置从而找到大概函数位置进行修改。..
2021-10-22 10:36:36 4001
原创 链接分享:STM32 操作Flash(介绍+附代码)
外部链接STM32学习笔记:读写内部Flash(介绍+附代码) - 竹风清 - 博客园内部链接STM32学习笔记:读写内部Flash(介绍+附代码)_Stephen_yu的专栏-CSDN博客
2021-09-13 14:21:31 170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人