嵌入式硬件通信接口:使用RingBuffer处理数据(一)

事实上UART只是一个传输层的协议。在实际的项目使用中,往往是根据项目的具体需求,在以UART作为物理传输接口的通信方式上,自定义私有的应用层协议,这个应用层协议本质就是数据协议,并且对协议的解析和实现,都需要MCU对数据进行缓存、计算、校验、分析等操作。说到缓存,在这先卖个关子……估计大部分人首先想到的是,代码里定义个全局变量的缓存数组,然后从串口的接收寄存器读出数据,并逐个字节地写到缓存数组里,接完一包数据,执行数据分析……这个想法是对的,逻辑是通的,但是……多少字节是完整一包数据?如果是中断接收,第一包收完还未来得及完全处理,有数据进来触发中断,又被写入缓存数组覆盖旧数据呢?针对这问题,也许有人会想到,多定义几个缓存数组,数据包写满一个缓存数组则开始写到另一缓存数组,或者分析处理前先拷贝出来,再或者分析处理前关串口接收……说来说去,这样子倒腾数据,一包一包的拷来移去的,太没效率了,还想关中断,这样通信效率也太低了!针对这里......阅读全文

嵌入式硬件通信接口:使用RingBuffer处理数据(一)

事实上UART只是一个传输层的协议。在实际的项目使用中,往往是根据项目的具体需求,在以UART作为物理传输接口的通信方式上,自定义私有的应用层协议,这个应用层协议本质就是数据协议,并且对协议的解析和实现,都需要MCU对数据进行缓存、计算、校验、分析等操作。说到缓存,在这先卖个关子……估计大部分人首先

嵌入式硬件通信接口:使用RingBuffer处理数据(二)

目测该项目确实有些久远了,最后一次commit已是两年前的2016年5月了。先不管,好酒也是有年份的!下载到本地,打开项目文件夹,查看C文件和H文件。快速浏览ringbuffer.c文件中对外封装的各个函数,主要有:循环缓冲区初始化增加一个数据元素增加多个数据元素读取一个元素读取多个元素查看

嵌入式硬件通信接口协议SPI三:模拟接口应用(一)

简单完成模拟SPI各个接口的实现后,仅仅利用示波器抓取信号的时序当然是不够的。虽然单片机作为SPI主机输出数据时的信号很容易抓取,但是从机发出的数据(即主机读取MISO信号时序),还要找个SPI接口的外设器件,这样主机发出、从机反馈。比如SPI-FLASH,此处找来一片型号为W25Q16的F

嵌入式硬件通信接口协议SPI:协议基础(一)

本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-SPI。相比于UART串口协议,SPI又有着其独特之处。简介SPI(全称SerialPeripheral Interface),串行外设接口。SPI是串行外设接口(SerialPeripheral Interface)的缩写。

嵌入式硬件通信接口协议IIC一:协议基础(一)

本节继续讲嵌入式硬件通信接口协议中的又一个串行通信接口-IIC。相比于UART串口协议和SPI串行外设接口协议,这个IIC又有其独特之处。简介IIC(Inter-Integrated Circuit),集成电路总线。IIC 即Inter-IntegratedCircuit(集成电路总

嵌入式硬件通信接口协议IIC一:协议基础(二)

关于理解和记忆,推荐分组记忆:SCL高电平时,SDA拉低开始,SDA拉高结束;SCL高电平时,接收方采样SDA管脚电平;SCL低电平时,发送方改变SDA管脚电平;应答位,SDA低电平表示ACK,SDA高电平表示NACK。以上就是IIC在通信过程中,可能出现的信号时序状态特征。如果要和SPI接口对比,

嵌入式硬件通信接口协议IIC一:协议基础(三)

AT24C1024B存储芯片的时钟要求:综上所述,IIC总线接口,属于两线、多主多从、半双工通信接口协议。熟悉两根信号线的时序图,基本上对IIC的了解就差不多了。关于IIC接口的分层架构设计,敬请期待后续更新。★★★★★推荐文章《【嵌入式编程】函数返回类型设计》《【嵌入式编程】平台大小端存储差异解决

嵌入式硬件通信接口协议SPI三:模拟接口应用(二)

验证模拟SPI接口的正确性,通过读取SPI-FLASH芯片的厂商ID,校验读到的数据与手册是否一致。FLASH功能模块属于模块库层,介于应用层和驱动层之间。因此对SPI-FLASH模块的源码封装成lib层。创建源码文件:dclib_spiflash.cdclib_spiflash.h同样的也需要对该

嵌入式硬件通信接口协议SPI:协议基础(三)

时钟速率速率选择定义了时钟信号线在数据传输是的翻转速率,这体现到每个芯片定义的接口时序图中,即可承受的速率范围,如果主机设的速率太快,而从机响应过慢会导致通信失败。数据bit位大小端选择数据的发送优先bit可配置,从上篇的UART协议可以知道,UART规定了数据优先发bit0,而这个SPI是

嵌入式硬件通信接口协议SPI:协议基础(二)

信号时序四线SPI接口的时序一般的总是先拉低从机选择信号线SS,然后输出SCLK,带着数据MOSI,此时MISO为高阻态。大致如下如:一般有SPI接口的器件,在Spec上都会有对应的时序图,这里分别截取SPI接口FLASH型号为GD25Q32C、SPI接口OLED型号为QG-2832TLBF

嵌入式硬件通信接口协议UART:快速使用串口及应用1

一、串口启用流程开讲前,先找几款芯片的串口demo程序瞄一眼。依次有STM32的V3.5标准库、nRF52832的官方demo以及51核的STC15系列单片机的官方DEMO。从以上的部分demo例程来看,并结文章《嵌入式硬件通信接口协议-UART(一)协议基础》的介绍,在启用串口的时候,需要配置的那

嵌入式硬件通信接口协议UART:快速使用串口及应用2

三、调试-输出开发调试过程中,输出的内容基本上就是想查看的变量值、代码的执行位置跟踪、算法或者某些运算的结果等等。这些输出,仅用于调试阶段,而在人机调试过程中,使用计算机的串口助手软件进行交互,则输出的数据应该便于识读和判断。1.   C库函数printf格式输出重定向到串口输出输出串口数据过程中,

嵌入式硬件通信接口协议UART:快速使用串口及应用3

2.   ANSI C标准中有几个标准预定义宏:__LINE__:源代码中的行号(字符串形式)__FILE__:当前*.c源码文件的文件名(字符串形式)__DATE__:编译日期(字符串形式)__TIME__:编译时间(字符串形式)__STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为

嵌入式硬件通信接口协议UART:快速使用串口及应用4

五、初见数据协议解析如果是简单几个字符的指令,可以用上述那样简单判断,但是在稍微中等级别的工程项目中,用那样的方式都已经很不便于处理和扩展了。比如有一串数据,并且长度不确定,将会超过10个字节、20个字节、100个字节甚至更多,那么这时候就必须使用协议解析的方式。通常的,数据协议都会有协议头、长度、

嵌入式硬件通信接口协议IIC二:分层架构设计模拟接口1

关于分层设计的思想,在之前的一篇文章中《嵌入式硬件通信接口协议-SPI(二)分层架构设计模拟接口》介绍SPI接口设计时,已经做了详细的设计过程讲解,在此就不赘述了。现在参考SPI的BSP层设计思路,用同样的方法来设计IIC接口的BSP层代码模块。本文将要讲解和实现的内容主要分为两个部分:代码

嵌入式硬件通信接口协议IIC二:分层架构设计模拟接口2

关于分层设计的思想,在之前的一篇文章中《嵌入式硬件通信接口协议-SPI(二)分层架构设计模拟接口》介绍SPI接口设计时,已经做了详细的设计过程讲解,在此就不赘述了。现在参考SPI的BSP层设计思路,用同样的方法来设计IIC接口的BSP层代码模块。本文将要讲解和实现的内容主要分为两个部分:代码

嵌入式硬件通信接口协议IIC二:分层架构设计模拟接口3

应答的目的,就是“接收方”告知“发送方”,我已正常收到刚刚发来的数据。等待应答ACK既然是应答,就有两向性:IIC从机应答IIC主机;IIC主机应答IIC从机。上图的应答ACK/NACK都是IIC主机主动输出的,是用来告知从机“我主机已正常收到”。而IIC从机告知主机的应答ACK,这里要用等

嵌入式硬件通信接口协议:UART不同电气规范下的标准2

而负逻辑电平的RS232的信号电压不仅恰好相反,而且电压大小也不一样。在MAX232芯片上,逻辑“0”对应的是+10V,逻辑“1”对应的是-10V。同时RS232还定义了机械接口特性,常见的有DB-9接口和DB-25接口,其接口定义如下表:针脚信号定义作用DB-91DCD载波检测Data Carri

嵌入式硬件通信接口协议:UART不同电气规范下的标准3

(三)          RS-422RS-422标准全称是“平衡电压数字接口电路的电气特性”,该协议制定了接口电路的电气特性。除了信号线的电气特性,其他规范基本都是沿用RS232的规范。RS-422的信号线采用的是差分传输方式,即原来的TxD、RxD信号线,此时分别改用两根线来完成,即TxD+和T

嵌入式硬件通信接口协议:UART不同电气规范下的标准1

在上一篇《嵌入式硬件通信接口协议-UART(一)协议基础》中,简单而细致描述了UART的各个配置项以及通信过程的信号时序,此篇将继续介绍UART接口在不一样的电气特性下,所使用的一些接口规范。一、    简介实际上UART只是对信号时序进行定义,而未定义其电气特性。在不一样的应用场景下,不同

嵌入式光谱

  德国tec5公司新开发的嵌入式光谱仪平台tecSaaS(tec5 Spectrometer as a Sensor),基于UV-VIS-NIR光谱技术,是一款可以不依赖于PC而独立工作的、模块化的光谱测试平台,可以直接集成到可移动式检测设备或工厂的生产线中,以实现高度智能化,灵活多样化和高度自动

嵌入式光谱

  德国tec5公司新开发的嵌入式光谱仪平台tecSaaS(tec5 Spectrometer as a Sensor),基于UV-VIS-NIR光谱技术,是一款可以不依赖于PC而独立工作的、模块化的光谱测试平台,可以直接集成到可移动式检测设备或工厂的生产线中,以实现高度智能化,灵活多样化和高度自动

嵌入式光谱

德国tec5公司新开发的嵌入式光谱仪平台tecSaaS(tec5 Spectrometer as a Sensor),基于UV-VIS-NIR光谱技术,是一款可以不依赖于PC而独立工作的、模块化的光谱测试平台,可以直接集成到可移动式检测设备或工厂的生产线中,以实现高度智能化,灵活多样化和高度自动

AVR单片机入门一:单片机嵌入式系统的结构与应用

  随着物联网与工业4.0的高速发展,单片机以其小体积、低成本、易操控的特性,在工业应用与智能控制领域越来越彰显出其优势,可以预见未来几年单片机系统必将得到越来越广泛的应用,下面OFweek电子工程网就为大家带来在单片机中极具优势的AVR单片机的入门教程。  单片机,全名单片机微控制器,单片微型计算

基于WinUSB实现的嵌入式USB免驱设备通信方式(一)

前言USB接口作为PC上最流行和通用的接口,具备可连接多种类型的设备,连接简单,即插即用,支持热插拨,多数应用场景下不需要提供独立的电源,高传输速率,高可靠性等特点,被越来越多的产品作为首选接口作为接入PC的连接方式。为了简化USB设备的开发和接入到PC系统,微软开发了WinUSB,可以将Winus

嵌入式软件系统测试中的仿真系统结构设计

   1 嵌入式系统概述    嵌入式系统是以计算机技术为基础,以应用为中心,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。    嵌入式软件是基于嵌入式系统设计的软件,是计算机软件的一种,同样由程序及文档组成,可细分成系统软件、支撑软件、应用软件三类。

在做嵌入式硬件设计中,这几点需要关注

嵌入式设计是个庞大的工程,今天就说说硬件电路设计方面的几个注意事项,首先,咱们了解下嵌入式的硬件构架。我们知道,CPU是这个系统的灵魂,所有的外围配置都与其相关联,这也突出了嵌入式设计的一个特点硬件可剪裁。在做嵌入式硬件设计中,以下几点需要关注。第一、电源确定电源对于嵌入式系统中的作用可以看

IESC-2025深圳国际嵌入式系统展览会

IESC 2025深圳国际嵌入式系统展览会International Embedded Systems Exhibition2025年4月9-11日  深圳会展中心大会主题:"创新引领,智嵌未来"组委会:向先生 133 8158 5596(同微) E-mail:sales1expo@126.com展

拉线位移传感器原理、设计方案和接线图(二)

2、硬件接口电路设计数据处理单元由磁敏角度感应器、微处理器单元、通信接口以及输出模块,具体的功能框如图2所示。通过分析图2,磁敏角度感应器选用MLX90316,它将拉线位移所导致的磁铁磁场转动的角度转换为磁敏角度。微处理器单元选用32位嵌入式ARM用于对接收到的磁敏角度数据进行处理,完成磁敏

揭秘ARM架构芯片的软硬件组成

  ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件,适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。  2016年7月27日,公司发财报显示,第二季度税前利润为1.301亿英镑(约合1.71亿美元),同比增长5%。在