iic

EEPROM24C02概述

房东的猫 提交于 2020-02-02 05:47:05
24C02 基础概念 * AT24C02 2kb = 2048bit = 2048/8 B = 256 B *存储空间256字节 * 32 pages of 8 bytes each *32页,每页8个字节 * Device Address * 1 0 1 0 A2 A1 A0 R/W * 1 0 1 0 0 0 0 0 = 0XA0 * 1 0 1 0 0 0 0 1 = 0XA1 *R/W读写控制位 IIC IIC 通信协议:  每一个 IIC 设备都有一个唯一的七位地址。 主机设备根据匹配地址选定唯一一个从机设备。  数据是以帧的形式传输的, 每一帧由 1 个字节组成(8 位)。 (注: 七位地址后还需带有一个读写控制位)  在 SCL 的上升沿, SDA 必须保持稳定, 并且 SDA 只能在 SCL 为低的期间改变。  除了数据帧, IIC 总线还有起始位、 停止位、 应答位。  启动: 在 SCL 为稳定的高电平期间, SDA 的一个下降沿启动传输  停止: 当 SCL 为稳定的高电平期间, SDA 的一个上升沿停止传输。  应答位是用来表示一个字节的成功传输。 对于总线的发送器(不论此发送器是主机还是从机), 在发送 8 个位的数据后, SDA需释放(由输出变为输入) 。 在第 9 个时钟脉冲期间, 接收机将 SDA拉低, 来应答接收到了 8 位数据。

stm32之IIC通信协议

…衆ロ難τιáo~ 提交于 2020-01-28 03:57:12
1 //³õʼ»¯IIC 2 void IIC_Init(void) 3 { 4 GPIO_InitTypeDef GPIO_InitStructure; 5 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); //ʹÄÜGPIOBʱÖÓ 6 7 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; 8 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //ÍÆÍìÊä³ö 9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 10 GPIO_Init(GPIOB, &GPIO_InitStructure); 11 GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //PB6,PB7 Êä³ö¸ß 12 } 13 //²úÉúIICÆðʼÐźŠ14 void IIC_Start(void) 15 { 16 SDA_OUT(); //sdaÏßÊä³ö 17 IIC_SDA=1; 18 IIC_SCL=1; 19 delay_us(4); 20 IIC_SDA=0;//START:when CLK is high,DATA

IIC--V1.0

感情迁移 提交于 2020-01-24 05:12:45
准备操作它 没有5V电源 暂时放弃 +++++++++++++小结一个外设框框BLE啥的都是++++++++++++++ void MIIC_init( void ) { //IIC 2 + 中断 1 + 复位 1 //IIC printf("I2C-INITED\r\n"); //ISR printf("ISR-INITED\r\n"); //RST printf("RST-INITED\r\n"); } char MIIC_verification(void) { return 0; } //基于银城的TOUCH开始IIC git checkout BASE_PRO void MIIC_test(void) { MIIC_init();//硬件初始化 if( MIIC_verification() != TRUE)//做一次IIC交互 { printf("MIIC_verification FAIL\n"); return; } printf("MIIC_verification OK\n"); } 来源: CSDN 作者: GKoSon 链接: https://blog.csdn.net/weixin_42381351/article/details/103766318

0.96寸oled使用IIC协议调试

三世轮回 提交于 2020-01-23 16:50:55
很久很久以前,我买了这样的一个屏,然后一直吃灰,今年过年回来调教一下! 翻阅很多网上的教程和代码,大家都差不多是相互借鉴的,重要的时大家的调试代码都是一样的,有些命令不清楚。翻阅了很多的资料,才写出了我觉得清楚明白的代码。 首先,需要了解这块屏幕的控制器,是ssd_1306,这其实是费了很多周折的,因为卖家的资料里面根本没有这个文档; 其次,是驱动这块屏幕的iic协议的信号周期,其实上面的文档里面就有; 最后,就是自己的调试了,我在下面的代码里面写的初始化函数里面有屏幕扫描的方向和数据写入的方式设置,代码中有注释。 下面就来说说重点,这块屏幕的IIC协议信号: 请自行下载上面提到的文档,然后找到8.1.5.1 I2C-bus Write data 这一节,下面对图中的信号进行说明 开始信号:sck置1,data从1跳0 从设备地址:前6位是固定的011110,第7位无所谓,第8位为0时为写模式,其实读模式用不到 控制器的回应信号:这里我们其实用不到,必须要用一个时钟信号来跳过这个信号,如果要用的话也是为了保证操作的稳定性,回应信号为1时说明之前的数据并未写入,回应信号为0时,说明之前的数据写入成功 控制字节:参考文档和下面代码中初始化的说明====1 控制器的回应信号:同上====2 数据字节:配合控制字节一起使用====3 控制器的回应信号:同上====4 重复上面的1、2、3

Linux中IIC总线驱动分析

断了今生、忘了曾经 提交于 2020-01-21 07:26:01
虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中的实现却相当复杂.通过阐述Linux系统中I2C总线体系结构,在此基础上完成嵌入式Linux系统中I2C总线驱动的开发. 1. 嵌入式Linux中I2C驱动程序分析 I2C(Inter2IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.嵌入式系统中,微控制器通过I2C总线可随时可对各个系统中的组件进行设置和查询,以管理系统的配置或掌握组件的功能状态来控制外围设备.I2C总线因为协议成熟,引脚简单,传输速率高,支持的芯片多,并且有利于实现电路的标准化和模块化,得到了包括Linux在内的很多操作系统的支持,受到开发者的青睐.在Linux环境下使用I2C总线协议,需要理解Linux的I2C总线驱动的体系结构,在此基础上来进行嵌入式驱动程序和应用程序的开发. 1.1 Linux的I2C驱动框架 Linux内核的I2C总线驱动程序框架如图1所示: Linux的I2C体系结构分为3个组成部分: I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法(即"al2gorithm")上层的,与具体适配器无关的代码以及探测设备,检测设备地址的上层代码等.这部分是与平台无关的

FPGA上实现IIC读写EEPROM

旧巷老猫 提交于 2020-01-20 08:31:56
FPGA上实现IIC读写EEPROM 1、IIC协议简介 IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I²C的正确读法为“I平方C”(“I-squared-C”),而“I二C”(“I-two-C”)则是另一种错误但被广泛使用的读法。自2006年10月1日起,使用I²C协议已经不需要支付专利费,但制造商仍然需要付费以获取I²C从属设备地址。 IIC协议的起始和结束条件如下图所示: 2、IIC协议读过程 这里给出的是针对某个地址的单次读,IIC也有连续读的,就是顺着当前地址一直读下去,不过我个人觉得那种方式用的不多,还是针对某个地址读的方式用的多。 IIC协议写过程 IIC写过程,也是有连续写的,但是这里只给出针对某个地址写的,单次写数据,也是用的较多的。 FPGA实现IIC读写EEPROM 主要代码: module iic_rw_test( input clk, input rst_n, input iic_done, input [7:0] data_read, output reg exc_iic, output reg iic_rw_ctl, output [7:0] data_write,

基于FPGA的IIC协议详解——EEPROM控制器(2)

回眸只為那壹抹淺笑 提交于 2020-01-15 19:04:49
IIC协议仿真 小结 modelsim仿真测试 上板测试代码 上班调试 结束语 小结 相信大家读完上一篇博客对IIC协议与eeprom读写已经有了一定的了解,本篇博客将以黑金A7102开发板为例进行验证上结代码的准确性,这里注意之江将上篇文章的代码放在A7102中是不能用的,因为上篇文章的代码是以24LC64为例进行书写的,而A7102中的eeprom芯片是24LC04。这里为了简单起见不再给出修改后的代码,需要的同学可以进群自取。 modelsim仿真测试 从上图中我们可以看到我们编写的eeprom控制器modelsim仿真通过验证。 上板测试代码 为了上板验证的方便性,我们将添加如下代码: top_test模块: `timescale 1 ns / 1 ps // ********************************************************************************* // Project Name : OSXXXX // Author : zhangningning // Email : nnzhang1996@foxmail.com // Website : // Module Name : top_test.v // Create Time : 2020-01-14 16:13:00 // Editor :

无监督STL-10

人盡茶涼 提交于 2020-01-08 23:00:13
STL-10 input.py 无监督学习数据集的入口代码 STL-10 IIC,tensorflow处理 IIC,tensorflow 来源: CSDN 作者: Drama King 链接: https://blog.csdn.net/cxkshizhenshuai/article/details/103898187

I2C总线设备驱动解析

痴心易碎 提交于 2019-12-26 18:57:36
1. I2C 协议 1.1 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定),I2C总线的接口电路结构如图1所示。 1.2 I2C总线的几种信号状态 1. 空闲状态:SDA和SCL都为高电平。 2. 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 3. 结束条件(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 4. 数据有效:在SCL的高电平期间, SDA保持稳定,数据有效。SDA的改变只能发生在SCL的底电平期间。 5. ACK信号: 数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。 1.3 I2C总线基本操作 I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。 数据传输中,首先主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位 )。接下来是读写操作的数据,以及 ACK响应信号。数据传输结束时,主器件产生停止条件,具体的过程如图2所示。 2. Linux I2C 结构分析 2.1 层次分析 1. I2C Core

IIC设备驱动程序详解

倾然丶 夕夏残阳落幕 提交于 2019-12-25 15:50:43
转自: http://www.cnblogs.com/lfsblack/archive/2012/09/14/2685783.html IIC设备是一种通过IIC总线连接的设备,由于其简单性,被广泛引用于电子系统中。在现代电子系统中,有很多的IIC设备需要进行相互之间通信 IIC总线是由PHILIPS公司开发的两线式串行总线,用于连接微处理器和外部IIC设备。IIC设备产生于20世纪80年代,最初专用与音频和视频设备,现在在各种电子设备中都广泛应用 IIC总线有两条总线线路,一条是串行数据线(SDA),一条是串行时钟线(SCL)。SDA负责数据传输,SCL负责数据传输的时钟同步。IIC设备通过这两条总线连接到处理器的IIC总线控制器上。一种典型的设备连接如图: 与其他总线相比,IIC总线有很多重要的特点。在选择一种设备来完成特定功能时,这些特点是选择IIC设备的重要依据。 主要特点: 1,每一个连接到总线的设备都可以通过唯一的设备地址单独访问 2,串行的8位双向数据传输,位速率在标准模式下可达到100kb/s;快速模式下可以达到400kb/s;告诉模式下可以达到3.4Mb/s 3,总线长度最长7.6m左右 4,片上滤波器可以增加抗干扰能力,保证数据的完成传输 5,连接到一条IIC总线上的设备数量只受到最大电容400pF的限制 6,它是一个多主机系统