自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 HT7036计量芯片(二)

HT7036计量芯片SPI通信调试心得。

2024-07-19 17:13:42 528 1

原创 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 616

原创 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 411

原创 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 896

原创 High-resolution timer ,HRTIM(一)

HRTIM生成PWM

2024-07-09 15:02:55 946

原创 模拟死区时间

PWM,延时模拟死区时间

2024-04-20 12:00:26 223

原创 http通信逻辑

紧接着是 open(),这个函数发生了之后 xmlHttp.readyState 的值是 1 了,那么就会有一个断点在 Open() 函数处断开,保留现场,紧接着又返回到 xmlHttp.onreadystatechange = handlestatechange 运行,然后再执行 Send() 函数,这个函数发生了之后 xmlHttp.readyState 的值是 2 了,接着又返回到 xmlHttp.onreadystatechange = handlestatechange 运行。

2024-04-11 23:42:37 830

原创 HAL ADC

ADC读取及校准

2024-04-11 23:11:49 113

原创 死区时间与互补PWM

死区时间与互补PWM

2024-04-11 22:45:40 444

原创 PWM and Buck-Boost

目标:使用STM32CubeIDE编程,控制STM32F103输出200KHz的PWM波形,且占空比可通过串口动态调节。

2024-04-11 22:00:42 411

原创 串口中断丢包&PWM波形畸变

无语了,这不就是个低通滤波电路吗,超过截止频率的波形,直接滤除,怪不得可以输出10KHz PWM波,不能输出100KHz。好的,就是它了,按照这篇博客写了串口中断的代码,功能实现了。写这一篇博客前我应该狠狠的反思下,为什么会犯如此低级的错误,之前在学校一直调用实验室构件,自己写相关代码,使用STM32CUBEIDE后,我反而不会写代码了。fuck,我居然在中断里面加了打印信息(中断里面不能使用耗时操作,这是常识,我真是把以前学的都还给老师了,吐血),还误以为HAL库的验证操作费太费时,导致串口丢包。

2024-03-05 19:44:09 391

原创 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 735 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 338

原创 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 357

原创 http传输OTA文件

WIFI芯片直接将小于256字节的数据发出,私有协议芯片仍按照256字节进行校验,导致校验失败,OTA文件传输过程直接终止。通过实际测试,发现发现,可靠传输并不会丢包,只是会把数据放到下一包里发送,也不会因为这一包数据长度异常而停止传输(我之前OTA终止,是因为采用私有协议通信的芯片检测到传输的这一包数据存在问题)。最近做项目,采用公司自研WIFI芯片配置为网络接入点(access point,AP),用户进入指定网页,通过POST接口,传输指令,具体过程ESP32肯定比我讲的更详细,就不再多言了。

2023-11-05 12:38:58 133

原创 gstreamer插件错误:链接没有汇

不记得为什么要这样做了,给后来者做个参考。

2023-10-28 09:35:10 75

原创 HT7036计量芯片(一)

电表的设计可以采用MCU+ADC、MCU+DSP、MCU+专用计量芯片实现。后两种方式比较符合计量与数据处理分开进行的思想,可以有效避免两者之间的相互干扰,提高电能表的稳性。我做毕设时,采用第三种方式,使用的计量芯片是HT7036计量芯片。HT7036计量芯片自带计量程序,MCU只需要通过SPI协议从指定地址读取计量芯片测得的数据,再进行回归即可。 HT7036计量芯片的内部有6个ADC差分通道,分别对应三相电压、电流,HT7036计量芯片引脚图如下图1-1所示。HT7036...

2023-10-28 09:14:12 979

原创 volatile

volatile

2021-11-23 10:03:47 4438

原创 mbedOS启动过程

使用芯片: MKL36Z64VLH6芯片启动到main函数之前的运行过程(1)芯片上电复位后,芯片内部机制首先从Flash的0x00000000地址,取出第一个表项的内容,赋值给堆栈指针MSP,完成堆栈指针初始化。(2)芯片内部机制将第二个表项,即复位处理程序Reset_Handler的首地址,赋值给程序计数(Program Counter,PC)寄存器。(3)芯片内部机制从PC...

2021-10-18 10:36:46 382

原创 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 1690

原创 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 2815

原创 SPI操作W25Q128

已主机全双工模式,模仿hal库的HAL_SPI_TransmitReceive函数,通过spi_receive1函数以位操作实现SPI操作外置Flash(W25Q128);但是得到的芯片ID却不是0xef,0x17一直循环。(这里之所以不说模仿HAL_SPI_Receive函数是因为主机全双工模式HAL_SPI_Receive函数调用HAL_SPI_TransmitReceive函数实现单字节接收...

2020-03-27 10:10:54 1561

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除