Acuity.
只要思想不滑坡,想法总比问题多。
展开
-
STM32H7 硬件CRC实现常用CRC算法
利用STM32H7 CRC硬件模块,基于HAL库实现常用的CRC算法,替换软件CRC。原创 2023-09-25 23:30:23 · 856 阅读 · 0 评论 -
正交编码器溢出处理
16位正交编码定时器溢出处理。原创 2022-12-18 18:42:54 · 3197 阅读 · 1 评论 -
STM32H7xx 串口DMA发送&接收(LL库)
LL库下STM32H7 串口DMA收发实现原创 2022-06-04 11:47:24 · 8539 阅读 · 1 评论 -
Keil AC5/Keil AC6/IAR指定数据绝对存储地址
Keil和IAR编译过程指定数据存储绝对地址原创 2022-03-26 15:48:41 · 4965 阅读 · 5 评论 -
【RTD】二分法查找和分段线性插值算法在RTD中应用
二分法查找和分段线性插值算法在RTD中的典型应用。原创 2021-03-16 00:30:21 · 1680 阅读 · 7 评论 -
【RTD】AD7793驱动程序
AD7793完整驱动程序,支持两线、三线、四线RTD。原创 2021-03-10 23:59:36 · 4712 阅读 · 7 评论 -
【RTD】AD7793两线式铂电阻PT100/PT1000应用
两线式RTD是低成本的检测方案,适用于检测精度不高、导线长度较短的场合。原创 2021-03-07 22:17:54 · 3071 阅读 · 0 评论 -
【RTD】AD7793四线式铂电阻PT100/PT1000应用
四线式RTD与AD7793应用,可以完全消除导线内阻的影响。原创 2021-03-07 10:57:39 · 5260 阅读 · 8 评论 -
【RTD】AD7793三线式铂电阻PT100/PT1000应用
本文介绍RTD驱动芯片AD7793 与三线RTD(PT100/PT1000)连接使用方法。原创 2021-03-06 18:36:58 · 9795 阅读 · 0 评论 -
【RTD】铂电阻测温原理与具体方法
使用铂电阻作温度测量传感器,有必要了解铂电阻测温原理。原创 2021-03-05 23:57:15 · 12463 阅读 · 2 评论 -
基于STM32标准库移植RT-Thread Nano
本文描述基于STM32F1标准库移植RT-Thread Nano。原创 2020-11-05 23:59:16 · 5691 阅读 · 0 评论 -
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制
本文描述串口DMA收/发机制设计,及STM32串口DMA收/发实现。原创 2020-09-03 23:54:58 · 39934 阅读 · 177 评论 -
【Tools】一个高效的BootLoader和App固件的合并方法
嵌入式固件一般分为BootLoader固件和App固件,在发布固件的时候,我们期望是将BootLoader和App固件合并成为一个固件,这样在量产时只需烧录一次即可。原创 2020-06-12 22:41:41 · 8677 阅读 · 4 评论 -
【组件】onewire(单总线)抽象
1.前言 onewire(单总线)是DALLAS公司推出的外围串行扩展总线技术总线,顾名思义,它是采用一根信号线进行通信,即传输时钟信号又传输数据,而且能够进行双向通信,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。常用到单总线的器件,一般是稳定传感器、EEPROM、唯一序列号芯片等,如DS18B20、DS2431。 在使用单总线时,往往很少CPU会提供硬件...原创 2018-07-22 15:04:11 · 13134 阅读 · 6 评论 -
【组件】i2c抽象/模拟i2c
1.写在前面i2c总线是由PHILIPS公司开发的一种简单、双向二线制同步串行总线。关于i2c的使用,并不陌生,C51、ARM、MSP430等,都基本集成硬件i2c,或者不集成i2c的,可以根据总线时序图使用普通IO口翻转模拟一根i2c总线。对于当下流行的stm32饱受诟病的硬件i2c,相信很多人都是使用模拟i2c。模拟i2c的源码比较多,大多都是大同小异,对于各类例程,提供的模拟i2c似乎都...原创 2017-12-23 09:27:26 · 14156 阅读 · 2 评论 -
【组件】软件实现STM32硬件CRC算法
STM32系列MCU自带CRC与标准CRC存在差别,大多情况下,应用程序与STM32通信往往需要用到CRC校验时,如固件升级、通信可靠性校验,此时需要统一CRC标准。为了STM32端可以充分利用自身硬件资源,STM32可以利用自带硬件CRC,应用程序端(如上位机、服务器、云等)可以通过软件实现STM32硬件CRC算法。uint32_t soft_crc32_st(uint32_t *pbu...原创 2019-12-09 23:46:58 · 1808 阅读 · 0 评论 -
LPC4088片内EEPROM使用方法
1.写在前面 LPC4088是NXP出的Cortex M4内核MCU,带硬件浮点运算,主频高达120MHz。其中一个优势是片内集成4KB EEPROM,省去外挂EERPOM的成本。2.使用片内EEPROM NXP亦提供了类似ST的硬件库,但没有ST做得人性化,但我们也可以直接使用其硬件库,省去配置寄存器的琐碎。使用片内EEPROM,与之相关的是“lpc_eeprom.c”原文件。2....原创 2019-02-25 00:08:44 · 1110 阅读 · 1 评论 -
标准硬件spi访问非标spi外设
1.写在前面 最近有收到坛友发帖提问或者私信,关于硬件spi总线访问非标spi器件问题,根据以往使用经验归纳总结。 spi(Serial Peripheral Interface)串行外设接口,嵌入式开发中最常用的接口之一,MCU、MPU都会提供硬件spi总线,甚至低端MCU都集成。对于无硬件spi总线,或者spi总线不够用时,也可以根据spi标准时序,使用普通GPIO模式spi总线。 ...原创 2019-01-25 00:09:20 · 1478 阅读 · 0 评论 -
【代码质量】嵌入式编程节约内存技巧
1.写在前面 嵌入式开发,不同于PC、移动设备(手机、平板)以“GB”为单位的存储空间(ROM)和内存(RAM)。尤其是MCU、SOC,RAM是KB级别的容量,ROM则稍微较大;当然也有较大容量的MCU选择,成本也跟着上去。MCU类的产品出货量大,成本控制比较苛刻,所以在选择MCU时,老板当然希望占用资源越小越好,进而控成本。因此,我们在程序编码时,就需要考虑资源问题,甚至要使用上一些“手段”...原创 2018-11-30 00:33:21 · 1895 阅读 · 0 评论 -
【组件】24系列EEPROM/FRAM通用接口
1.写在前面 “24系列”的EEPROM,一般地我们认为是以i2c为通信接口的一系列串行EEPROM,各大半导体厂商出产的该系列EEPROM都遵循这个规则,而且电路和控制程序上也兼容。如AT24C02、ST24C02等。 FRAM(铁电存储器)是近几年来比较热门的一项存储技术,并且有相关实际产品的应用。FRAM具有ROM和RAM的特点,擦写寿命长、读写速度快、低功耗(读写所需电压低...原创 2018-09-18 22:00:27 · 6052 阅读 · 1 评论 -
NXP SPIFI(QSPI)应用详解与程序固件分散加载
1. SPIFI 标准 SPIFI(SPI FLASH INTERFACE),百度百科的定义:SPIFI是SPI闪存接口专利技术的缩写,可以帮助32位嵌入式微片器使用小尺寸、低成本的串行闪存替代大尺寸、高成本的并行闪存。利用SPIFI技术,外部串行闪存可以映射到微控制器内存中,达到片上内存读取效果。关于SPIFI的资料并不多,因为SPIFI是NXP(恩智浦)公司提出来并应用在自身各系列的MC...原创 2018-08-15 00:48:54 · 13803 阅读 · 9 评论 -
STM32F4模拟i2c
STM32F4系列出来已有好几年,价格上也越来越亲人,在需求性能的场合上可以考虑使用。对于STM32F1的硬件i2c的诟病也是很多使用者吐槽,对于F4的硬件i2c,本人没有做详细测试,也不好判断,据一些使用者反馈有改善。在之前“i2c模型/模拟i2c”文章中有使用到模拟i2c,现在将其移植到F4系列的MCU上。F1中用的是标准库,F4中用的是HAL库,函数API有差别,但使用思维是一样的。 ...原创 2018-06-27 00:13:30 · 5727 阅读 · 5 评论 -
STM32F1使用12M晶振
STM32F1官方默认及大部分场合下都是使用8MHz的外部晶振,STM32F1最大的主频时钟是72MHz,超频的除外。理论上,采用外部时钟作为时钟源时,可以选择4M、8M、12M等晶振,如果MCU使用最高72M主频,对于常用的8M晶振,配置MCU内部为8倍频即可,而在使用12M晶振,配置为6倍频即可。 一般情况下,使用一款MCU时,建议采用官方推荐大小频率的晶振,过高频率的晶振对于外部电...原创 2018-05-26 15:11:03 · 7203 阅读 · 0 评论 -
TMC260/TMC2660/TMC262步进电机驱动
TCM260是德国TRINAMIC公司产的步进电机驱动芯片,综合性能应该是步进电机驱动芯片中排前列的,当然价格也是。TMC260程序上兼容TMC2660、TMC262,其中TMC2660是比较新的型号,驱动电流也比TMC260要大;TMC262是外置mos管,可驱动大功率步进电机,如57步进电机等。在之前“用过的几款步进电机驱动IC”的文章中,有简单介绍过,因此有坛友发私信或者留言询问该芯片的...原创 2018-05-08 00:14:12 · 22134 阅读 · 89 评论 -
ARM Cortex M4使用浮点运算单元(FPU)
1.ARM Cortex M4 ARM Cortex-M4处理器是由ARM专门开发的最新嵌入式处理器,在M3的基础上强化了运算能力,新加了浮点、DSP、并行计算等。Cortex-M4处理器的最大亮点之一,也是本文主要描述的一个功能就是增加了一个单精度浮点单元(FPU),能够高效率处理较为复杂的浮点运算,如电机闭环控制、PID算法、快速傅里叶变换等。关于M4与M3的性能对比,官方提供的测试数据...原创 2018-04-29 00:07:17 · 25677 阅读 · 6 评论 -
Keil设置编辑环境
对于Visual Studio、Qt Creator,习惯使用黑色背景,可能很多人一开始都觉得“黑色背景”会显得技术比较牛x,包括自己在内。但自从将背景调成黑色后,哪怕看久了眼睛也不会痛。在此之前,也用过各类背景颜色,诸如护眼绿、淡灰色等,看久了眼睛都不舒服,最后才发现简单粗暴的纯黑色才是最好使的。后面的浏览器、各类开发软件等都使用回黑色背景。 对于MCU开发,Keil同样设置为黑色背景...原创 2018-03-19 23:24:11 · 14042 阅读 · 3 评论 -
MCU上电到启动应用程序前的工作
MCU整体工作流程可总结如下:上电——>主时钟起振——>启动代码——>用户程序(main函数)。对于我们应用开发来说,大部分工作重点是在应用程序编写这块。特别是高级MCU的出现,如ARM系列的STM32、LPC等32位MCU,以及芯片原厂的完善底层代码,启动代码已经固化在芯片内部flash(称为BootLoader),或者已经提供完整的汇编启动源码。因此,启动过程这块,我们比...原创 2018-03-15 20:04:52 · 8968 阅读 · 1 评论 -
用过的几款步进电机驱动IC
写在前面 步进电机,驱动起来相对容易实现,整步驱动可以用mos管或者达林顿管搭建H桥控制即可。然而,一般情况下我们都会选择专用的步进电机驱动集成芯片。使用专用集成步进电机驱动芯片有诸多优势,比如效率高、高精度(细分)的支持、过流保护、过热保护、丢步检测、内置减速曲线(可减轻处理器负荷)等;而且驱动起来也是非常简易,只需脉冲方波或者通过总线(spi、i2c)发送指令控制即可;以及成本不高,甚...原创 2017-12-21 23:20:15 · 59448 阅读 · 6 评论 -
LED驱动—LP55231
写在前面LED驱动,严格来说需要恒流源控制,通过调节电流大小来调整LED亮度。一般情况下会用模拟器件搭建,但,精度、准确度、稳定性等方面有所欠缺。以目前集成电路的技术,首要考虑会是集成芯片,推荐一款本人在项目中使用的LED驱动芯片。LP55231LP55231是德州仪器(TI)产的一款9通道LED驱动芯片,每个通道的电流大小、PWM控制都可单独调节,每个通道最大支持25.5mA的电流输...原创 2017-12-29 17:14:20 · 2508 阅读 · 0 评论 -
EEPROM(AT24C16)页写算法
1.写在前面 学习单片机或者从事嵌入式开发的,对于EEPROM绝不会陌生,尤其的24系列的EEPROM很是经典,或者与此兼容的FRAM系列,如AT24C02、AT24C16、FM24C16等。 驱动起这个系列的EEPROM,可以说是没有任何难点,各类教程、源码、驱动都可以轻松找到并作稍微改动即可使用。但是,对于使用技巧方面,大多的教程并不会提及,而只是作为学习“入门”的一个途径...原创 2017-11-16 13:58:11 · 14763 阅读 · 20 评论 -
韦根协议及IO模拟韦根34接口
1.写在前面韦根(Wiegand)协议是国际上统一的标准,是由摩托罗拉公司制定的一种通讯协议。它适用于涉及门禁控制系统的读卡器和卡片的许多特性。 韦根有许多种类格式,常见有26-bit 、34-bit、37-bit格式,其中26-bit格式是最常用的格式。而标准26-bit 格式是一个开放式的格式,这就意味着任何人都可以购买某一特定格式的HID卡,并且这些特定格式的种类是公开可选的。26-Bi...原创 2017-12-30 23:35:22 · 28657 阅读 · 18 评论 -
【组件】spi抽象/硬件spi
1.写在前面spi(Serial Peripheral Interface)即串行外设接口。与i2c一样,spi也常用外设设备通信的总线,从事嵌入式开发必不可少的掌握。根据本人以往的经历,对spi进行总结(主要是MCU范畴,Linux已有成熟的驱动设备),主要目的及实现:a)spi总线与spi设备分离;b)快速使用新的硬件spi或者模拟spi;c)方便移植spi总线设备及spi外设...原创 2018-01-07 23:09:16 · 13142 阅读 · 6 评论 -
【组件】模拟spi抽象
1.前言接上一篇“spi抽象/硬件spi”博客。上一篇文章主要描述spi总线抽象过程和使用方式,同时实现stm32f1硬件spi,及spi抽象接口函数的使用。对于一些特殊mcu没有硬件spi,或者硬件spi不够用的情况下,可以用io翻转方式模拟spi总线。模拟spi实现,只需将硬件spi部分替代即可,上层代码或者器件外设驱动程序无须更改,方便移植。模拟spi与之前一篇“i2c抽象/...原创 2018-01-14 22:55:20 · 2956 阅读 · 10 评论 -
ADC(二)—MCP3202
1.器件介绍mcp3202是Microchip(微芯科技)公司产的一款ADC芯片,成本低,使用方便。本文主要分析软件使用方面的特点及方法。1.1器件特点1)转换精度:12bit2)转换速率:100ksps(最快)3)伪差分输入4)4线spi控制接口5)使用简单,无须复杂的寄存器配置,直接通过spi获取转换数据1.2应用范围1)传感器2)过程控制3)数据采...原创 2018-01-23 10:31:44 · 6267 阅读 · 0 评论 -
LM75a
1.器件介绍LM75a是一种数字接口(i2c)的温度传感器,各大半导体生产厂家都有生产,如德州仪器(TI)、恩智浦(NXP)、意法半导体(ST)等,各个厂家的命名稍有差别,但硬件上、程序上是完全兼容的。下面介绍LM75a器件,及使用之前的i2c封装代码驱动该器件。1.1器件特点1)精度:0.125℃2)范围:-55℃——+125℃3)i2c数字控制接口4)3个地址选择引脚,...原创 2018-01-23 16:06:29 · 12905 阅读 · 0 评论