- 博客(33)
- 收藏
- 关注
原创 beacon-dongle系统(二)AP及Server建立
浙江工作最后阶段写了“beacon-dongle系统(一)http通信逻辑”,今天继续对这篇文章进行补充。之前的文章主要是关于查询、配置命令,该功能已经展示了beacon-dongle系统的通信逻辑,打通了上位机(client)、dongle(server)、设备节点(beacon)三者间的通信。简要讲了http通信的逻辑,给出了创建无线网络接入点(Access Point,AP)时,调用的配网指令。这篇文章给出了当时创建AP时调用的接口,并对http服务器创建过程进行些补充。
2025-08-12 22:50:04
927
原创 Ymodem传输协议过程
Ymodem协议数据传输过程分析 本文记录了作者使用Ymodem协议进行文件传输的实际操作经验与发现。Ymodem协议与常见串口协议不同,由接收方主动发起通信。协议格式包含帧头、ID、信息块和校验和,信息块长度由首字节决定(01为128字节,02为1024字节)。作者通过SecureCRT和串口调试工具模拟传输过程,发现实际应用中存在与文档不一致之处:1)第一包数据请求应使用0x43或0x6,后续用0x6;2)上位机可能连续发送多包数据;3)可通过全零数据包识别传输结束。文中展示了具体通信报文,并指出程序实
2025-07-12 12:01:39
811
1
原创 台体操作须知
使用脉冲法进行电量测量时,若是三相有功模式,台体默认脉冲常数为有功脉冲常数,脉冲法检测有功脉冲。短接按钮按下后,指定表位无电流输出,其他表位电流输出不受影响。而且,台体电流经过三表位电流端子形成一个闭合回路,三表位任何一相电流断开,台体都会报警,停止电流输出。部分台体配置有电流短接按钮或短接片,表位短接后,台体报警Ix电流保护,停止输出电流。通过按钮可直接设置电压电流的输出路数、台体功率因子(0.5L,0.8C)、电流大小(20%Ib,50%Ib,100%Ib,这里的Ib是基准电流,不是b相电流。
2025-06-20 08:28:57
197
原创 SPI调试心得
之前一直调用已有的驱动,实现SPI通信,所以调试的难点多在于极性,相位,数据长度,软硬件片选。再深一些,才意识到SPI通信是全双工通信,发送和接收同时进行。主机先发送命令,再发送冗余字节,为从机提供时钟信号。刚开始工作,主要关注的也是单主单从,后来时间久点,开始接触到多主一从。多主一从场景,两个主机不能同时操纵从机,但大家有没有考虑过,空闲状态的主机该如何配置,是否会对正常工作的主机产生影响。最近一段时间,开始接触gpio模拟SPI,工作也开始向底层偏移,有幸看到SPI从机工作的代码。
2025-01-27 10:15:27
412
原创 Keil吐槽
之前一直用stm32cubeIDE,工作变动后,改用keil,刚开始就遇到些小问题,主要是关于高亮功能和keil5打开keil4工程的。
2024-10-06 23:28:31
1802
原创 Indepent/Dual ADC+DMA+Software/Hardware Trigger
后来写的第三篇ADC文章——High-resolution timer ,HRTIM(二),代码基于STM32G474,这篇文章属于Dual ADC模式,PWM中心触发ADC采样,DMA进行数据传输。前两篇属于软件触发ADC采样,第三篇属于通过硬件事件触发ADC采样。同时,第一篇属于Independent ADC,后两篇属于Dual ADC。本篇文章,将在STM32F103芯片上,分别实现Independent ADC+DMA+ Software,Dual ADC+DMA+Software/Hardware
2024-07-17 07:49:23
853
原创 High-resolution timer ,HRTIM(三)
本篇主要讲述repetition interrupt,demo程序在repetition中断处理程序中执行PID算法,依据电压外环,电流内环计算占空比,追踪最大功率点。HRTIM频率1.36GHz,PWM波频率250KHz,4us触发一次定时器更新时间。在保证PWM频率不变的前提下,原本打算通过设置条件,决定是否执行中断处理程序中的PID算法。通过设置HRTIM_MREP寄存器数据,可以做到不改变PWM频率前提下,改变HRTIM更新中断的触发频率。当然,也可以把程序写在。
2024-07-10 10:39:30
1066
原创 High-resolution timer ,HRTIM(二)
本篇以STM32G474芯片为例,主要讲述HRTIM如何在PWM中点处触发Dual ADC采样。首先,我会介绍Dual ADC,然后介绍PWM触发ADC采样。模块的详细描述,见RM0440 Rev8。我此前也没有independent adc和dual adc的概念,这次程序移植过程,给了我些浅薄认知,不管对错,先记录下来。另外,再给大家推荐一个链接,这是ST工作人员写的文章。
2024-07-09 16:44:32
1619
原创 beacon-dongle系统(一)http通信逻辑
紧接着是 open(),这个函数发生了之后 xmlHttp.readyState 的值是 1 了,那么就会有一个断点在 Open() 函数处断开,保留现场,紧接着又返回到 xmlHttp.onreadystatechange = handlestatechange 运行,然后再执行 Send() 函数,这个函数发生了之后 xmlHttp.readyState 的值是 2 了,接着又返回到 xmlHttp.onreadystatechange = handlestatechange 运行。
2024-04-11 23:42:37
905
原创 PWM and Buck-Boost
目标:使用STM32CubeIDE编程,控制STM32F103输出200KHz的PWM波形,且占空比可通过串口动态调节。
2024-04-11 22:00:42
919
原创 串口中断丢包&PWM波形畸变
无语了,这不就是个低通滤波电路吗,超过截止频率的波形,直接滤除,怪不得可以输出10KHz PWM波,不能输出100KHz。好的,就是它了,按照这篇博客写了串口中断的代码,功能实现了。写这一篇博客前我应该狠狠的反思下,为什么会犯如此低级的错误,之前在学校一直调用实验室构件,自己写相关代码,使用STM32CUBEIDE后,我反而不会写代码了。fuck,我居然在中断里面加了打印信息(中断里面不能使用耗时操作,这是常识,我真是把以前学的都还给老师了,吐血),还误以为HAL库的验证操作费太费时,导致串口丢包。
2024-03-05 19:44:09
734
原创 gpiolib函数调用
gpiolib所以我采用上面的博客链接,添加了虚拟驱动,并在该驱动中改变gpio27引脚的电平,以触发与之相连的gpio0引脚的中断。这样,可以兼顾系统加载与gpiolib测试的需要。如果想在其它模块中改变gpio引脚的配置,需要在dts中做出相应修改,具体内容如下。开发人员拿到芯片后,依据芯片设计硬件电路板,硬件电路板相关的模块配置都记录在dts文件中,编译时,dts中的配置会覆盖dtsi中的配置。2.dts的gpio节点需要添加gpio-ranges,pinctrl-names,pinctrl-0属性。
2024-01-23 14:58:57
839
1
原创 shell
if else逻辑的结束用fi表示,if后的小括号()被中括号[]取代,condition两端必须有空格,防止“[condition]” ,“[condition” ,“condition]”被误认为变量,出现类似"["或者"]"未发现的错误([$1 not found)提示。shell变量不像C语言,存在变量关键字,如int,char。shell脚本的变量用$N表示,$0代表shell脚本,$1代表脚本名字后的第一个参数,$2代表脚本名字后的第二个参数。i++)的语法,C语言用的比较多,有点不适应。
2024-01-23 14:18:05
371
原创 wifi STA
通过socket(domain,type,protocol)函数创建套接字,domain标识IP地址族规范,这里采用IPV4地址族。创建成功后,再通过connect(s,name,namelen)经由35000端口,连接同一个局域网下的tcp server。wifi_set_opmode选择wifi节点功能,即ap(access point)或者STA(wireless station)功能。wifi_start_station创建wifi STA节点,并传入要连接的热点的名称,密码。
2023-12-18 20:43:50
404
原创 http传输OTA文件Bug解决
WIFI芯片直接将小于256字节的数据发出,私有协议芯片仍按照256字节进行校验,导致校验失败,OTA文件传输过程直接终止。通过实际测试,发现发现,可靠传输并不会丢包,只是会把数据放到下一包里发送,也不会因为这一包数据长度异常而停止传输(我之前OTA终止,是因为采用私有协议通信的芯片检测到传输的这一包数据存在问题)。最近做项目,采用公司自研WIFI芯片配置为网络接入点(access point,AP),用户进入指定网页,通过POST接口,传输指令,具体过程ESP32肯定比我讲的更详细,就不再多言了。
2023-11-05 12:38:58
330
原创 HT7036计量芯片(一)
电表的设计可以采用MCU+ADC、MCU+DSP、MCU+专用计量芯片实现。后两种方式比较符合计量与数据处理分开进行的思想,可以有效避免两者之间的相互干扰,提高电能表的稳性。我做毕设时,采用第三种方式,使用的计量芯片是HT7036计量芯片。HT7036计量芯片自带计量程序,MCU只需要通过SPI协议从指定地址读取计量芯片测得的数据,再进行回归即可。 HT7036计量芯片的内部有6个ADC差分通道,分别对应三相电压、电流,HT7036计量芯片引脚图如下图1-1所示。HT7036...
2023-10-28 09:14:12
2445
原创 mbedOS启动过程
使用芯片: MKL36Z64VLH6芯片启动到main函数之前的运行过程(1)芯片上电复位后,芯片内部机制首先从Flash的0x00000000地址,取出第一个表项的内容,赋值给堆栈指针MSP,完成堆栈指针初始化。(2)芯片内部机制将第二个表项,即复位处理程序Reset_Handler的首地址,赋值给程序计数(Program Counter,PC)寄存器。(3)芯片内部机制从PC...
2021-10-18 10:36:46
505
原创 1.1 GPIO构件制作之点亮小灯
1.1.1 GPIO基本概念1.通用I/O(GPIO)的含义所谓通用I/O,也记为GPIO(General Purpose I/O),即基本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最基本形式。本书中使用正逻辑,电源(Vcc)代表高电平,对应数字信号“1”;地(GND)代表低电平,对应数字信号“0”。作为通用输入引脚,MCU内部程序可以通过端口寄存器获取该引脚状态,以确定该引脚是“1”(高电平)或“0”(低电平),即开关量输入。作为通用输出引脚,MCU内部程序通过端口寄存器控制该引
2020-06-03 14:04:59
1975
原创 1.3 ADC构件制作(STM32L431)
1.3.1 基本概念1.转换精度转换精度(Conversion accuracy)是指数字量变化一个最小量时对应模拟信号的变化量,也称为分辨率(Resolution),通常用模数转换器ADC的二进制位数来表征。2.单端输入与差分输入只使用一个输出引脚,使用公共地GND作为参考电平的叫做单端输入。而从微机的两个引脚接入模拟信号,AD采样值是两个引脚的电平差值叫做差分输入。通常在AD转换编程时,把每一路模拟量称为一个通道(Channel),使用通道号(Channel number)表达哪个模
2020-06-03 13:47:55
3265
通信协议YMODEM协议详解:文件传输技术及其实现要点
2025-07-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人