驱动
文章平均质量分 72
爱兔蛙
宁可慢,不要站
展开
-
串行数据(SPI/I2C/UART/USB)的时钟同步
串行数据的时钟同步一、串行数据的时钟同步问题串行数据的发送(如USB,UART,I2C, SPI等)是通过一条数据总线发送,于是就有如果通过一条数据总线连续发送连续的01信号给接收设备,由于发送者和接受者的时钟频率不同,信号的同步是个问题,举个例子,接受者接收到一段连续时间的低电平,无法得知这究竟代表3个0还是10个0。二、I2C和SPI数据的时钟同步解决上面的问题的办法I2C和SPI是在传输数据信号的同时,附加一个时钟信号,用来同步两端的数据传输,接受者可以在时钟信号的辅助下进行数据采样,就能正确原创 2021-04-27 11:07:44 · 5021 阅读 · 0 评论 -
SPI协议讲解
SPI ( Serial Peripheral Interface,串行外设接口)是一种同步、串行通讯接口规格,常用于短距离通讯,主要是在嵌入式系统中。此接口由Mototola公司推出,已成为一种事实标准(没有统一的协议规范,但是基于其广泛的使用,根据实际使用中大家通用的习惯形成了一个类似行规的标准)。对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheets和application notes沟通实现上的细节。SPI是一种高速的,全双工,同步的通信总线。分为主(master)、原创 2021-03-26 10:57:18 · 600 阅读 · 0 评论 -
嵌入式软件----底层驱动书写的基本规则
1 对每个硬件对象编写独立的驱动程序每个对象对应一个头文件和源文件,如果对象是外部对象,则要在头文件用宏定义对象接在哪个脚上,头文件只声明供外部调用的功能函数,也就是说,其他人只要看头文件函数声明就知道如何使用此对象而无需去看源文件去阅读代码。一般函数的命名规则是:对象功能,比如初始化 Charger,函数名可以为 ChargerInit。如果一个函数只供对象功能函数内部调用,则此函数在源文件里面声明和实现,不出现在头文件里,并声明为 static 函数,因为声明为 static 的函数只能供定义此函数原创 2021-03-11 19:50:09 · 915 阅读 · 0 评论 -
Nor 和NAND Flash 比较
Nor 和NAND Flash区别1、操作速度在写数据和擦除大量数据时,由于NAND flash 支持整块操作,因此NAND比NOR快得多,两者相差近千倍;但是数据量小的时候,比如几个字节,Nor Flash比NAND flash 擦写速度快,因为对NAND flash的读写操作,虽然只是几个字节的操作,也需要重写整个数据块;由于NOR地址线和数据线分开,所以NOR芯片可以像SRAM一样连在数据线上。读取数据时,NOR比NAND快,NOR以字或字节为单位进行读取,NAND要先向芯片发送地址信息进行寻址原创 2021-03-10 09:03:39 · 1662 阅读 · 0 评论 -
I2C通信协议介绍
I2C是本人在实际项目中使用最多的一个通信协议,其只用两条线(SDA和SCL)在连接到总线上的设备之间传送数据。每一个设备都由唯一的地址来识别(不管是MCU、外部sensor、LCD驱动器、存储器或者键盘接口),并且可以依照设备的功能作为发送器或者接收器使用。LCD驱动器可能只是个接收器,而存储器可以发送和接受数据。除了发送器和接收器,当传送数据时设备还可以作为主机或者从机。主机就是初始化数据传输和产生时钟信号的设备,在那个时刻,任何被寻址的设备都是从机。SDA和SCL信号SDA和SCL都是双向线路,通原创 2021-02-13 11:12:07 · 545 阅读 · 0 评论 -
添加I2c恢复机制导致的死循环
问题背景:项目过程中,为了防止I2c挂死,添加I2c防挂死机制,防挂死机制如下:uint32_t I2cWriteData(uint32_t addr, uint8_t *regaddr, uint8_t *data, uint8_t datalen){ uint32_t ret = i2cwrite驱动(addr,regaddr,datalen);//中间又重试 if(ret != success) { 1.将本芯片的SDA和SCL管脚配置成普通GPIO,并将SCL管脚拉高拉低9个周期原创 2020-08-01 14:33:28 · 511 阅读 · 0 评论 -
自己写的i2c驱动
对于嵌入式开发的朋友来说,I2C协议实在是再熟悉不过了,许多芯片都是采用的I2C来进行相应的配置。今天,我们就随便聊聊这个I2C协议,并且自己通过普通GPIO口实现一个i2c驱动。原创 2020-05-09 14:08:02 · 517 阅读 · 0 评论