snmplink
嵌入式系统设计应用
展开
-
STM32开发笔记122:STM32CubeIDE的链接路径
本文解决STM32CubeIDE的链接路径问题。原创 2022-10-12 13:03:16 · 891 阅读 · 0 评论 -
STM32开发笔记121:我理解的卡尔曼滤波
项目采集到的数据里面含有噪音,虽然满足精度要求,但希望能够将精度进一步提高,故考虑滤波算法。先后使用了均值滤波,加权平均,中值滤波等简单滤波算法,但效果都不明显。后直接使用IIR和FIR滤波,但发现经过上述两种滤波算法处理后的数据,纹波只是少许下降。最后,采用卡尔曼滤波算法,轻松解决。在整个项目设计的过程中,在网上查阅了很多资料,也有本人的一些理解,为了后续项目的设计,通过本篇文章加以总结。以下内容来自百度百科。...原创 2022-07-18 17:22:00 · 2418 阅读 · 0 评论 -
STM32开发笔记120:解决printf中%f不能输出的问题
在STM32CubeIDE中编写程序,默认情况下printf中使用%f不能数据,本文加以解决。原创 2022-07-15 16:49:30 · 1482 阅读 · 0 评论 -
STM32开发笔记119:使能FPU需要哪些宏?
网上有很多文章介绍如何使能FPU,并介绍了相应的很多宏,主要有本文系统的分析一下这些宏,请注意我当前使用的IED开发环境是STM32CubeIDE。通过以上分析,我们可知道在STM32CubeIDE中,希望使能FPU,只需定义ARM_MATH_CM4宏即可。https。...原创 2022-07-15 00:33:51 · 944 阅读 · 0 评论 -
STM32开发笔记118:在STM32CubeIDE中使用CMSIS DSP库
STM32F4系列单片机具有FPU,可以进行DSP运算,本文讲解如何在现有的项目中加入DSP库,我现在使用的编译环境是STM32CubeIDE。原创 2022-07-14 23:40:19 · 1299 阅读 · 0 评论 -
STM32开发笔记117:使用Matlab生成IIR低通滤波器系数
使用ADS1258进行采样,为了进一步提高采样精度,需要设计低通滤波器,对噪音进行进一步滤除。本文讲解使用Matlab生成IIR低通滤波器系统的方法。 Matlab Online网址:https://matlab.mathworks.com/ 第一次需要使用邮箱注册,免费使用30天。Matlab软件本身比较大,下载安装都很麻烦,所以使用Matlab Online是一个非常好的方法。 由于,我要取得直流量,所以将截至频率设计的比较低 可看到当前结构:直接II型,二阶节(Direct-原创 2022-07-14 14:38:00 · 1218 阅读 · 0 评论 -
STM32开发笔记116:使用DMA实现SPI传输
DMA可以不借助CPU高效完成数据传输,本文所涉及的项目需要使用ADS1258周期性快速采样,用过采用传统的设计方法,必然后过多的占用CPU时间,本文尝试采用DMA加以解决,以提高整体的运行效率。 有关DMA的基本概念,网上讲述的文章很多,本文就不再赘述了。本文直接讲述CUBE的设置方法。 本文使用软件片选,进行DMA程序设计时,需考虑片选问题。 主要是在原先头文件的基础上增加2、SPI构造函数 首先初始化DMA,然后初始化SPI。3、DMA读写函数4、处理DMA中断5、调用中断原创 2022-07-11 00:29:46 · 4600 阅读 · 0 评论 -
STM32开发笔记115:解决定时器设置成功后不启动问题
定时器在Cube中的设置方法,在本专栏中已有2篇文章加以介绍了。今天用同样的方法在STM32CubeIDE中使用TIM3,但TIM3不启动,本文记录其原因。 图形设置,已多次介绍,本文仅给出截图。 主要是加入Timer3初始化函数原型与Timer3中断服务函数原型。2、初始化Timer33、处理TImer3的中断4、调用中断服务函数5、中断服务函数实现三、运行效果与问题 按照上述逻辑,应该可以看到LED2以1秒为间隔闪烁,但实际运行效果LED2没有任何动作。 这说明Cu原创 2022-07-08 23:39:27 · 2659 阅读 · 0 评论 -
STM32开发笔记114:STM32F40XXX 定时器跨接总线
STM32F40XXX系列单片机具有TIM1-TIM14共14个定时器,其跨接APB1和APB2二总线,由于此二总线的频率不相同,所以在对定时器进行设置时,需查阅数据手册判断其具体的跨接总线,本文介绍TIM1-TIM14定时器的跨接总线的具体情况。 如下图所示STM32F40XXX系列单片机,将不同的定时器分配到不同的APB上,STM32F40XXX共有两个APB,分别为APB1和APB2,其总线频率不相同。STM32F40XXX最高支持168MHz主频,APB1的最高支持42MHz主频,定时原创 2022-07-08 00:06:50 · 625 阅读 · 0 评论 -
STM32开发笔记113:ADS1258驱动设计——读取温度值
本文介绍如何应用ADS1258读取温度值。单独读取温度值,可采取如下函数进行系统初始化。原创 2022-06-11 16:31:04 · 977 阅读 · 0 评论 -
STM32开发笔记112:ADS1258驱动设计——读寄存器
本文介绍基于STM32的ADS1258的驱动程序设计。ADS1258的最大转换速率23.7KSPS,700us内可完成16通道扫描。单位SPS是指每秒采样的点数,也就是说ADS1258每秒采样23700点。降低采样速率,可以提高采样分辨率。(4)读寄存器驱动程序(5)测试程序(6)上电缺省值必须为0复位SPI接口的定时器0:4096个时钟周期(256微秒,fclk = 16MHz)无反应,复位SPI接口1:256个时钟周期(16微秒,fclk = 16MHz)无反应,复位SPI接口缺原创 2022-06-07 00:48:45 · 1173 阅读 · 0 评论 -
STM32开发笔记111:移植W5500驱动程序
文章目录前言1、电路设置2、设置STM32Cube3、将W5500源代码,拷贝到指定位置4、更改文件包含位置5、在include.h中加入包含文件6、去除Wmissing-braces警告7、去除Wparentheses警告8、加入SPI驱动程序10、增加函数声明11、在main.cpp中定义函数实现12、完善类前言本文讲解如何将W5500移植到STM32Cube工程里,虽然本文使用STM32CubeIDE,但程序本身并不限定具体的开发环境。1、电路设置使用STM32F407的SPI1接口。2原创 2022-04-02 23:42:14 · 2161 阅读 · 0 评论 -
STM32开发笔记110:外设对象应设置为全局变量
文章目录前言一、问题二、原因三、解决方法前言调试Uart驱动程序,调试了很长时间,其原因在于犯了一个比较低级的错误,把它记录下来,以防止今后再犯类似错误。一、问题串口间隔1秒,向外发数,驱动程序已封装为类,程序如下:void StartDefaultTask(void *argument){ CUart Uart(2, 9600, 0); uint8_t data[10]; uint8_t i; for (i = 0; i < 10; i++) { data[i] = i原创 2022-03-27 00:34:49 · 532 阅读 · 0 评论 -
STM32开发笔记109:在STM32CubeIDE中调整字体显示
文章目录前言1、打开首选项2、对字体进行编辑3、找到合适的字体4、完成设置前言STM32CubeIDE在初始时,中文字体显示比较小,而且不美观,可通过如下方法进行调整。1、打开首选项2、对字体进行编辑3、找到合适的字体4、完成设置...原创 2022-03-20 23:59:17 · 6204 阅读 · 0 评论 -
STM32开发笔记108:将STM32CubeIDE设置为中文
文章目录前言1、在浏览器中输入下列网站2、找到具体网址3、安装软件4、输入网址5、搜索等待6、找到简体中文7、等待...8、同意License9、等待安装完毕10、重启软件11、重启后,显示中文前言本文介绍将STM32CubeIDE设置为中文的方法。1、在浏览器中输入下列网站http://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/2、找到具体网址3、安装软件4、输入网址5、搜索等待6、找到简体中文7、等原创 2022-03-20 17:49:24 · 7012 阅读 · 0 评论 -
STM32开发笔记107:安装STM32CubeIDE
文章目录前言一、STM32CubeIDE介绍二、功能三、步骤1、选择安装位置2、选择调试、下载器3、文件拷贝完成4、安装完成前言本文介绍STM32CubeIDE的安装方法。一、STM32CubeIDE介绍STM32CubeIDE是一体式多操作系统开发工具,是STM32Cube软件生态系统的一部分。 STM32CubeIde Board PhotoSTM32CubeIDE是一种高级C/C++开发平台,具有STM32微控制器和微处理器的外设配置、代码生成、代码编译和调试功能。它基于Eclipse®/C原创 2022-03-16 19:40:31 · 1140 阅读 · 0 评论 -
STM32开发笔记106:解决ST-LINK的Old ST-LINK firmware/ST-LINK already usde问题
文章目录一、问题现象:猜测问题二、问题解决1、从ST官网下载STM32CubePrg并正确安装2、启动STM32CubePrg,此时并不能识别下载器3、重新插拔下载器,刷新后,可识别4、点击Firmware upgrad进行更新5、进入Open in update mode模式,并进行更新6、更新后,重新回到ST-LINK Utility,恢复正常7、应当注意的是,进入update mode时,如果不成功,反复插拔几次就可以了。一、问题今日使用ST-LINK下载程序报错,使用ST-LINK Utili原创 2022-03-15 23:45:28 · 2220 阅读 · 0 评论 -
STM32开发笔记105: 24位模数转换芯片ADS1258使用方法(下载封装)
文章目录1、登陆TI官网2、搜索ADS12583、选择“Design & development”4、选择“CAD/CAE symbols”5、选择“View options”6、选择下载格式7、选择Altium格式8、点击下载后,可以得到zip文件9、解压缩10、启动Altium Designer11、文件-运行脚本12、加入UI_Impot_ADS1258IRTCR.PrjScr文件13、在接下来的对话框中选择ADS1258IRTCR.txt文件14、转换后,就得到了相应的原理图和PCB库1原创 2021-12-22 22:22:54 · 909 阅读 · 0 评论 -
STM32开发笔记104: 24位模数转换芯片ADS1258使用方法(引脚)
文章目录一、引脚图二、引脚描述1、AIN3-AIN0![在这里插入图片描述](https://img-blog.csdnimg.cn/67df8ffe29754718bd81cefe6c48caeb.png)2、AVSS![在这里插入图片描述](https://img-blog.csdnimg.cn/d4fac3b2350a455f9dc7076d6ab16cb3.png)3、AVDD4、PLLCAP5、XTAL1、XTAL26、PWDN7、RESET8、CLKSEL、CLKIO9、GPIO0-GPIO71原创 2021-12-22 00:18:21 · 1463 阅读 · 0 评论 -
STM32开发笔记103: 24位模数转换芯片ADS1258使用方法(概述)
文章目录一、特性二、应用三、系统框图四、描述一、特性1、完整24位ADC转换芯片;2、可以固定通道采样,也可自动通道扫描;3、固定通道数据传输率125kSPS;4、自动通道扫描数据传输率23.7kSPS;5、单次转换数据处理;6、16个单端输入或8个差分输入;7、单电源+5V操作,或者双电源2.5V操作;8、低噪音:2.8uVrms at 1.8kSPS;9、0.0003%的累积非线性;10、DC稳定性:每摄氏度0.02uV偏移,每摄氏度0.4ppm增益偏移;11、传感器断路发现;原创 2021-12-21 00:07:15 · 5215 阅读 · 1 评论 -
STM32开发笔记102: 定义系统噪音性能
文章目录前言一、系统规格二、定义系统噪音参数三、输入相关噪音四、总结1、一般流程2、输入相关噪音前言本篇文章学习完毕后,我们将解决“我们需要什么样的噪音性能”这一问题,来轻松的选择用于自己应用中所需要的ADC。一、系统规格我们以一个为特定应用定义系统规格的例子开始,将这些规格转换为目标噪音性能参数,并使用相关的ADC信息进行比较,选择合适的ADC。如图所示,我们选择的应用是四线电阻电桥的称重应用。对于这个系统规格,我们假设一个桥的灵敏度是2mV/V,激励电压为2.5V,你希望以每秒5个样本的原创 2021-12-13 00:21:32 · 485 阅读 · 0 评论 -
STM32开发笔记101: ADC噪音参数及测量方法
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言在我们开始探讨如何测量ADC噪音之前,我们应当指导数据手册中描述规格参数,是针对于ADC自身,而非整个系统。因此,ADC制造商测试ADC的方式限于自身的测试系统。所以,在不同的系统条件下,使用ADC反映的噪声系统会与数据表中的报告内容有所不同。如图所示,ADC制造商有两种方法用于测量ADC噪声。第一种方法是将ADC的输入端短接到一起,让后测量输出端的细微变化,用与反映热噪声。第二种方法是输入一个特定振幅的正弦波(例如1VP原创 2021-12-12 23:01:58 · 2140 阅读 · 0 评论 -
STM32开发笔记100: ADC噪音分类
文章目录前言一、噪音的来源1、宽带噪音2、粉红噪声或1/ƒ噪音3、突发噪声(Popcorn noise)二、噪声进入信号链的途径1、ADCs2、内部或外部放大器3、内部或外部电压参考4、电源供给5、内部或外部时钟6、低质量线路板设计7、传感器三、ADC固有噪声1、公式表达2、理想化的ADC传递函数3、量化噪声4、热噪声5、小结四、低分辨率与高分辨率ADC比较五、总结前言噪音通常是一种随机信号,它是指任何情况下都不需要的信号,噪音使原始信号偏离其固有的数值。噪音在任何电子系统中都是存在的,我们应该确认的原创 2021-12-11 01:50:53 · 1148 阅读 · 0 评论 -
STM32开发笔记99: 将PlatformIO产生的elf文件转换为hex文件
单片机型号:STM32F091RCT6使用PlatformIO进行单片机程序开发,每次均产生elf格式的映像文件,此文件可用于调试,但批量下载极不方便,考虑将其转换为核心文件,使用STM32 ST-LINK Utility进行程序下载,步骤如下:1、确认生成elf文件的具体位置。2、调用arm-none-eabi-objcopy.exe文件予以实现。3、完整命令如下:arm-none-eabi-objcopy ./.pio/build/nucleo_f091rc/firmwar原创 2020-12-05 01:08:04 · 1582 阅读 · 4 评论 -
STM32开发笔记98: 关闭VS Code中的扩展自动更新
单片机型号:STM32F091RCT6使用VSCode+PlatformIO进行单片机开发,每次在启动VS Code时,都会对其中的扩展进行更新检查并自动进行更新,大部分扩展的更新速度很快,唯独PlatformIO由于网络原因更新速度极慢,且其不完成更新,则没有命令行出现,不能进行任何相关的操作,很是麻烦,所以考虑关闭VSCode中的扩展更新,用以解决这个问题,步骤如下:1、启动VSCode,文件-首选项-联机服务设置。2、去除,AutoCheckUpdates和AutoUpda...原创 2020-12-05 00:47:20 · 2527 阅读 · 4 评论 -
STM32开发笔记97: C++语言命名规范
单片机型号:STM32F091RCT6在此文章中记录C++语言的命名规范。1、文件名均采用小写英文字母方式实现,多个英文单词之间用“_"予以分割;2、宏定义均采用大写英文字母方式实现,多个英文单词之间用“_"予以分割;3、自定义数据类型均小写英文字母方式实现,多个英文单词之间用“_"予以分割;4、类名首字母用C表示,后续采用匈牙利命名法,首字母大写,如遇英文缩写单词,则按照英文...原创 2020-02-01 14:25:43 · 3185 阅读 · 0 评论 -
STM32开发笔记96: 在PlatformIO中更改外部晶振频率
单片机型号:STM32F091RCT6低于PlatformIO开发平台,如果更改外部晶振频率,需修正stm32f0xx_hal_conf.h文件,原先使用keil开发时,此文件和项目相关,可以单独修改,但是在PlatformIO平台上,则此文件的路径如下:自己多次尝试屏蔽此文件,包括删除,都没有成功,实在没有方法,只能在此文件中,直接更改,代码如下:/* ############...原创 2020-01-23 00:44:52 · 1356 阅读 · 1 评论 -
STM32开发笔记95: 处理UNUSED宏
单片机型号:STM32F091RCT6使用C语音在PlatformIO中进行STM32Cube的工程设计,一切正常,希望使用C++语音进行程序开发,顾将main.c文件改为main.cpp文件,再次编译报如下警告:In file included from C:\users\snmplink\.platformio\packages\framework-stm32cube\f0\Driv...原创 2020-01-23 00:14:47 · 2145 阅读 · 0 评论 -
STM32开发笔记94: 忽略PlatformIO中的特定警告
单片机型号:STM32F091RCT6尝试在PlatformIO中使用STM32Cube进行项目的开发工作,第1次编译,即出现如下图的警告。该警告在GCC中有详尽的解释:Allows the compiler to assume the strictest aliasing rules applicable to the language being compiled. For ...原创 2020-01-21 00:06:55 · 742 阅读 · 0 评论 -
STM32开发笔记93: SX1268驱动程序的移植1
单片机型号:STM32L053R8T6本文详述将SX1268官方驱动程序,移植到C++程序设计框架的方法。1、文件结构在系统中加入以下文件。2、屏蔽和硬件相关的数据类型sx126x.h文件,屏蔽以下语句。暂时屏蔽,后续需要解决。typedef struct SX126x_s{// Gpio_t Reset;// Gpio_t ...原创 2019-09-10 21:27:24 · 4316 阅读 · 2 评论 -
STM32开发笔记92: SX1268驱动程序设计(时钟)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍时钟的相关内容。一、RC频率参考Two RC oscillators are available: 64 kHz and 13 MHz RC oscillators. The 64 kHz RC oscillator (RC64k) is optionally used by the...原创 2019-09-05 14:15:48 · 1795 阅读 · 4 评论 -
STM32开发笔记91: SX1268驱动程序设计(发送模式)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍发送模式的相关驱动程序。一、TX模式In TX mode after ramping-up the Power-Amplifier (PA) transmits the data buffer. In TX mode the circuit can operate indiffer...原创 2019-09-04 22:58:01 · 4613 阅读 · 2 评论 -
STM32开发笔记90: SX1268驱动程序设计(数据缓存)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍数据缓存的相关驱动程序。一、工作原理二、接收模式的数据缓存In receive mode RxBaseAddr specifies the buffer offset in memory at which the received packet payload data wi...原创 2019-09-03 22:32:52 · 1698 阅读 · 3 评论 -
STM32开发笔记89: SX1268驱动程序设计(电源控制)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍电源控制的相关驱动程序。一、使用DC-DC或者LDOTwo forms of voltage regulation (DC-DC buck converter or linear LDO regulator) are available depending upon the desi...原创 2019-09-03 18:56:28 · 1721 阅读 · 0 评论 -
STM32开发笔记88: SX1268驱动程序设计(天线控制)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍天线控制的相关驱动程序。上篇日志,提到在SX126xCheckDeviceReady函数中,如果芯片处于启动、硬复位、SLEEP模式、RX_DC模式,转换到STDBY模式时,需唤醒芯片,并将天线打开,程序如下:void CSX1268::SX126xCheckDeviceReady...原创 2019-09-01 22:39:49 · 3264 阅读 · 4 评论 -
STM32开发笔记87: SX1268驱动程序设计(设置为STDBY模式)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍将芯片设置为STDBY模式的相关驱动程序。一、STDBY模式芯片上电、复位和从睡眠模式唤醒,都会从Startup模式自动进入到STDBY模式。STDBY模式又称为待机模式或者旁路模式。在待机模式下,主机应在进入RX或TX模式之前配置芯片。默认情况下,系统选择13MHZ的RC振荡器...原创 2019-09-01 15:35:05 · 2942 阅读 · 2 评论 -
STM32开发笔记86:使用printf向串口输出数据
单片机型号:STM32L053R8T6本文介绍使用printf向串口输出数据的方法,具体如下:1、根据原理图确认使用哪路串口进行printf输出,并在config.h文件予以声明,程序如下:/** 配置调试信息 */#define DEBUG_UART 2 //指定调试端口号2、建立该串口类,从CMiniUART继承,初始化该串口,程序如下:#ifndef ...原创 2019-08-30 17:09:54 · 1163 阅读 · 0 评论 -
STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片唤醒驱动程序。一、RxDutyCycle模式在讲述本篇内容之前,我们先来看一下SX1268的一种模式RxDutyCycle,译为中文为接收占空比模式。其可使用SetRxDutyCycle命令进入RxDutyCycle模式,我们来看一下该命令的详细解释。该命令具有2个参数,...原创 2019-08-30 01:07:13 · 2804 阅读 · 0 评论 -
STM32开发笔记84: SX1268驱动程序设计(SPI总线)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍SPI总线驱动程序。一、数据手册1、关键点:全双工SPI CPOL=0,CPHA=0 从器件 写操作:地址字节+数据字节 读操作:直接发送地址字节,就可返回一个数据字节 NSS在整个帧传输过程保持低电平 MISO在NSS为高时为高阻态 SCK最大时钟16M2、...原创 2019-08-29 22:21:51 · 2681 阅读 · 0 评论 -
STM32开发笔记83: SX1268驱动程序设计(芯片复位)
单片机型号:STM32L053R8T6本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片复位驱动程序。一、数据手册1、NRESET是芯片第15引脚,低有效。2、通过15引脚NREST,可以达到完整的芯片复位。复位后,会执行标准的校准程序,先前的内容将丢失。复位最短时间为50us,给100us较为合适。3、这张图是芯片各个模式的引脚的状态表,可以看到...原创 2019-08-29 00:03:40 · 3597 阅读 · 0 评论