iic

IIC总线的FPGA实现

余生颓废 提交于 2019-12-24 19:13:02
一、摘要   DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线的FPGA实现做个说明。 二、实验平台   软件平台:ModelSim-Altera 6.4a (Quartus II 9.0)   硬件平台:DIY_DE2 三、实验原理 1、 IIC 总线器件工作原理   在IIC总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号变为低电平,将使SCL线上所有器件开始并保护低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不影响SCL线的状态,这些器件将进入高电平等待的状态。   当所有器件的时钟信号都变为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件决定,而时钟高电平时间由时钟高电平期最短的器件决定。   IIC总线上数据的传输速率在标准模式下可达100kbit/s 在快速模式下可达400kbit/s 在高速模式下可达3.4Mbit/s ,连接到总线的接口数量只由总线电容是400pF 的限制决定。 2、IIC 总线的传输协议与数据传送时序 (1)起始和停止条件

IIC总线解析

耗尽温柔 提交于 2019-12-24 18:04:49
IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种 总线 类型是由 飞利浦 半导体公司在八十年代初设计出来的,主要是用来连接整体电路( ICS ) ,IIC是一种多向 控制总线 ,也就是说多个芯片可以连接到同一 总线结构 下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输 总线 接口。 IIC的主要构成只有两个双向的信号线,一个是数据线SDA,一个是时钟线SCL。 IIC主要特点: 具有多机功能,该模块既可以做主设备也可以做为从设备 IIC主设备功能,主要产生时钟,产生起始信号和停止信号 IIC从设备功能,可编程的IIC地址检测,停止位检测 支持不同速率的通讯速度,标准速度(最高速度100kHZ),快速(最高400kHZ) IIC通信过程: 主模式时,IIC的接口启动数据传输并且产生时钟信号。串行数据传输总是以其实条件开始并以停止条件借宿。起始条件和停止条件都是在主模式下由软件产生控制的。 从模式时,IIC接口能识别它自己的地址(7位或者10位)和在数据总线广播的地址(好比每个人都有不同的身份ID,叫到哪个哪个就发生应答),同时软件能够控制开启或者禁止广播呼叫地址的识别。 数据和地址按照8位每个字节来传输,高位在前。跟在起始条件后的1或者2个字节是地址(7位模式为1个自己,10位模式为2个字节)。地址只能主模式发送

IIC协议

自闭症网瘾萝莉.ら 提交于 2019-12-22 06:34:45
总线信号 :   SDA :串行数据线   SCL :串行时钟 总线空闲状态 :   SDA :高电平   SCL :高电平 起始位:SCL为高电平期间 SDA出现下降沿 终止位:SCL为高电平期间 SDA出现上升沿 数据传输 :SDA的数据在SCL高电平期间被写入从机。所以SDA的数据变化要发生在SCL低电平期间。 IIC时钟频率:不高于400K 应答:当IIC主机(不一定是发送端还是接受端)将8位数据或命令传出后,会将SDA信号设置为输入,等待从机应答(等待SDA由高电平拉为低电平)    若从机正确应答,表明数据或者命令传输成功,否则传输失败,注意,应答信号是数据接收方发送给数据发送方的。 IIC器件地址:每一个IIC器件都有一个器件地址,有的器件地址在出厂时地址就设定好了,用户不可以更改,比如OV7670的       地址为0x42。有的器件例如EEPROM,前四个地址已经确定为1010,后三个地址是由硬件链接确定的,所以一       个IIC总线最多能连8个EEPROM芯片。     图上开始信号之后,七位地址代表器件地址,第八位代表读或者写,0为写,1代表读,然后跟着响应位。  IIC器件单字节写时序: IIC器件多字节地址写时序:多字节地址比单字节地址在时序上就多了一块写地址 单字节器件读时序:注意最后产生无应答信号,另外多字节地址读时序跟单字节类似

Verilog IIC通信实验笔记

╄→гoц情女王★ 提交于 2019-12-22 06:33:10
Verilog IIC通信实验笔记 Write by Gianttank 我实验的是 AT24C08的单字节读,单字节写,页读和页写,在高于3.3V系统中他的通信速率最高400KHZ的,我实验里用的是100KHZ的速率。图1是硬件原理图 图1 图2 图2是器件地址,我的原理图是A2接高。 IIC通信协议中要注意的地方: 1. 当时钟线SCL 高电平时,如果把数据线SDA 从高电平拉到低电平,则表示通信开始(START);如果把数据线SDA 从低电平拉到高电平,则表示通信结束(STOP)。SDA数据不变,视为数据采样。 2. 前一个STOP 结束后。与下一个START开始要保证5ms的间隔。 3. 页写有字节限制,而页读没有,可以一次读出所有的数据。 4. SDA信号在FPGA为接受方时要设置为高阻态。 5. 应答信号永远是接收方发送的,这个很重要,我就是卡在这里几天没找到原因。FPGA在读数据的时候,第9个周期是FPGA发低电平给EEPROM的。 图3为RTL视图 图3 引脚定义 信号名称 方向 描述 clk input 50M的主时钟 rst_n input 复位信号 sw1 input 按键1 低电平有效 按下执行字节写 sw2 input 按键2 低电平有效 按下执行字节读 sw3 input 按键3 低电平有效 按下执行 页写 sw4 input 按键4 低电平有效

获取6050原始数据

橙三吉。 提交于 2019-12-18 12:21:36
MPU6050的原始数据分析 个人经验来讲,如果对IIC总线协议很熟悉的情况下,获取6050的原始数据就不是什么太大的难题,毕竟再怎么复杂也只是一个传感器而已,就像你打电话给传感器,要它的数据,然后它返回给你,仅此而已。 首先,要了解6050是干什么的: MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。(来自百度百科) 简单说,就是该传感器能获取XYZ三个轴方向的角速度和加速度,包含6个16位的ADC来表示这些值,关于传感器的测量原理,可以简单想象类似下图的模式,是不很直观。 当然,用过AD转换的童鞋都知道,这个是会有精度问题的,6050也一样,而且受到的噪声影响更大,但本次不讨论这个问题,仅讨论怎么获取原始数据 话不多说,上代码 初始化代码实现 /*--------MPU6050地址宏定义---------*/ #define MPU6050_SLAVEAddr 0xd0 //IIC写6050地址 #define MPU6050_ACCAddr 0x3B //MPU加速度读值地址 #define MPU6050_GYROAddr 0x43 //陀螺仪读值地址 #define MPU_Remove_Sleep 0x6B //解除休眠地址 #define MPU_GYRO_Smple

总线

若如初见. 提交于 2019-12-15 20:58:04
总线有三种:内部总线、系统总线和外部总线。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连;外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。 除了总线外,还有一些接口,他们是多种总线的集合体,或者说来者不拒。 SPI SPI(Serial Peripheral Interface): MOTOROLA公司提出的同步串行总线方式。高速同步串行口。3~4线接口,收发独立、可同步进行。 因硬件功能强大而被广泛应用。在单片机组成的智能仪器和测控系统。如果对速度要求不高,采用SPI总线模式十个不错的选择。他可以节省I/O端口,提高外设的数目和系统性能。标准SPI总线由四根线组成:串行时钟线(SCK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)和片选信号(CS)。有的SPI接口芯片带有中断信号线或没有MOSI。 SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或者主设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO口模拟SPI总线,必须要有一个输出口

I2C接口开漏输出输入双向

十年热恋 提交于 2019-12-13 22:03:17
I2C接口 原创 朝辞暮见 发布于2018-06-13 19:45:25 阅读数 8265 收藏 展开 一、I2C总线协议内容 1. I2C总线引脚定义 SDA (I2C数据引脚) CLK (I2C数据引脚) 2. I2C 总线物理连接 I2C总线物理连接如下图所示,SDA和CLK连接线上连有两个上拉电阻,当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低。 二、I2C总线的数据传送 1. 数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化 1 scl处于高电平的时候,如果sda处于低电平:传输数据0,sda处于高电平:传输数据1 2.在scl处于高电平的时候,sda用来传输数据,必须保持电平稳定 3.如果要产生数据即sda需要变化时,只能在scl处于低电平的时候 2. 起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 1. 信号的发起和终止,由主机发起,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 2. scl处于高电平的时候,sda由高->低的跳变, 表示发起传输,产生起始信号s, 如果低-

软件模拟串口通信

点点圈 提交于 2019-12-12 03:44:48
软件模拟串口通信 发送部分 接收部分 上个月入职了一家做消费类电子的公司,做了两个小项目,用的是NY8芯片,资源有限,没有串口和IIC,其中一个项目是做闹钟显示板,只用将主机发过来来命令处理就行,做的是通版,使用串口和IIC两种方式数据。 网上搜寻一边,参考借鉴了整理出一份可行的方案,整理出来供以后工作和有需要的朋友使用。 下面是h文件 # ifndef SoftWareSeries # define SoftWareSeries # include "user.h" # include "display.h" # define BaudRate 10 //bps9600 10 4800 20 # define RXDBit Port_B7 # define TXDBit Port_C0 # define IO_RXD PORTBbits.PB7 # define IO_TXD PORTCbits.PC0 enum { COM_START_BIT , COM_D0_BIT , COM_D1_BIT , COM_D2_BIT , COM_D3_BIT , COM_D4_BIT , COM_D5_BIT , COM_D6_BIT , COM_D7_BIT , COM_STOP_BIT , } ; extern U8 RXD_BIT ; extern U8 RXD_DATA ; void

软件模拟IIC主从机

亡梦爱人 提交于 2019-12-11 09:40:38
软件模拟IIC 从机部分 从机接收部分 从机发送部分 主机部分 主机接收部分 主机发送部分 上个月入职了一家做消费类电子的公司,做了两个小项目,用的是NY8芯片,资源有限,没有串口和IIC,其中一个项目是做闹钟显示板,只用将主机发过来来命令处理就行,做的是通版,使用串口和IIC两种方式数据。 网上搜寻一边,参考借鉴了整理出一份可行的方案,项目是用从机,发到博客上方便日后工作及有需要的朋友使用。 从机部分 因为项目简单,就只有数据接收,数据命令处理,显示。显示部分使用定时器中断动态扫描方式,主函数用来处理接收。 从机接收部分 接收采用的是外部中断+定时器中断的方式,UART数据帧起始bit是高电平拉低,触发外部中断之后开启定时器,定时器按bps中断读取IO口电平 从机发送部分 主机部分 用于测试的主机使用的是原子哥的软件模拟IIC 主机接收部分 主机发送部分 来源: CSDN 作者: 蜜汁辣酱^_^ 链接: https://blog.csdn.net/lala0903/article/details/103484853

IIC总线规范

自作多情 提交于 2019-12-04 07:13:31
在消费者电子 电讯和工业电子中 看上去不相关的设计里经常有很多相似的地方 例如几乎每个系 统都包括 • 一些智能控制 通常是一个单片的微控制器 • 通用电路 例如 LCD 驱动器 远程 I/O 口 RAM EEPROM 或数据转换器 • 面向应用的电路 譬如收音机和视频系统的数字调谐和信号处理电路 或者是音频拨号电话的 DTMF 发生器 下面是 I2C 总线的一些特征: • 只要求两条总线线路 一条串行数据线 SDA 一条串行时钟线 SCL • 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机 从机关系软件设定地 址 主机可以作为主机发送器或主机接收器 • 它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和 仲裁 防止数据被破坏 • 串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速 模式下可达 3.4Mbit/s • 片上的滤波器可以滤去总线数据线上的毛刺波 保证数据完整 • 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制 Q I2C 总线支持任何 IC 生产过程 NMOS CMOS 双极性 两线――串行数据 SDA 和串行时钟 SCL 线在连接到总线的器件间传递信息 每个器件都有一个唯一的地址识别 无论是微控制器 LCD 驱动器 存储器或键盘接口