iic

Verilog -- IIC总线协议

纵饮孤独 提交于 2020-04-04 15:06:47
Verilog -- IIC总线协议 @ 目录 Verilog -- IIC总线协议 简介 读写时序 写时序 读时序 verilog代码设计 IIC发送模块的接口定义与整体设计 SCL标志位创建逻辑 发送逻辑 读逻辑 IIC设备多字节连续读写操作 参考自 https://www.cnblogs.com/liujinggang/p/9656358.html 上面的博文写的很好,下面只是摘录一些重要知识点以及自己的理解。 简介 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。IIC数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些变种实现了低速模式(10 kbps)和快速+模式(1 Mbps)。 需要注意的是IIC总线的数据采集是scl高电平期间,再0电平期间允许sda数据变化。因此是电平敏感的,不是边沿触发类型 。  

I2C协议

﹥>﹥吖頭↗ 提交于 2020-03-17 07:53:27
什么是I2C协议? I2C协议是单片机与其它芯片常用的通讯协议,由于只需要两根线,所以很好使用。 1. I2C总线的特点 (1)只要求两条总线线路 一条串行数据线SDA 一条串行时钟线SCL (2) 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址;主机可以作为主发送器或主机接收器 (3)它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏 (4)串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达.4Mbit/s (5)片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整 (6) 连接到相同总线的IC数量只受到总线的最大电容400pF 限制 I2C协议总线信号时序分析 1 .数据的有效性: SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在 SCL线的时钟信号是低电平时才能改变。 2 .起始和停止条件 当SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件。 当SCL线是高电平时,SDA线由低电平向高电平切换表示停止条件。如图3.2 I2C起始和停止条件所示。 3. 总线空闲状态 SDA和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高; 4

「STM32 」IIC通讯原理及其实验

北慕城南 提交于 2020-03-17 07:52:26
I2C两线式串行总线通讯协议,它是由飞利浦开发的,主要用于连接微控制器及其外围设备之间,它是由数据线SDA和信号线SCL构成的,可发送和接收数据即在MUC和I2C设备之间,I2C和I2C之间进行全双工信号传输,高速I2C总线一般可达到400kbps。一般我们也称为TWI接口。 I2C支持多主机模式: 即在这个主线上可以挂载n个I2C外设。 对于I2C协议,其实也很简单,不要想的那么复杂,其实就是电平的变换。我们可以人为的分为6个部分 整体时序图: 各状态: 空闲状态 I2C总线的SCK和SDA两个线同时处于高电平的时候,规定为总线的空闲状态,这个就是由总线上的上拉电阻把电平拉高的。 起始信号 当SCL为高电平期间,SDA由高电平变成低电平,即为起始信号。启动信号是一种电平跳变时序信号,不是一个电平信号。 停止信号 当SCL为高电平期间,SDA由低电平变为高电平,即为停止信号。停止信号也是一种电平跳变时序信号,不是一个电平信号。 应答信号 发送器每发送一个字节(8bit)数据,就在时钟脉冲(SCL)9期间释放数据线(SDA),再由接收器来反馈一个应答信号,应答信号为低电平的时候,规定为有效应答位(ACK:应答位),表明接收器已经成功的接收了该字节,应答信号为高电平时,规定为非应答位(NACK:非应答位),表示接收器没有成功的接收该字节。 对于反馈有效应答位(ACK)

51单片机复习:IIC总线

谁都会走 提交于 2020-03-17 07:52:15
iic串行总线:有两条线,一个数据线SDA,一个时钟线SCL,两条线都接上拉电阻,因而空闲状态,两条线均为高电压,它与其它与之 相连的器件是一种线与的关系,这点我们可以类比c语言的&&符号,意味着连接总线的任意器件只要为低电压,就会拉低总线 电压,连接到总线的器件都有唯一地址。 数据位有效性的规定: 时钟信号SCL为高电平时,数据信号SDA必须保持稳定。 时钟信号SCL为低电平时,数据信号SDA才允许变化。 起始信号和终止信号:(你可以观察到,此时SCL一直为高电平,数据信号定然不变,所以可以以此区别) SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化 表示终止信号。(下降沿为起始信号,上升沿为终止信号) 在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。(了解就行) 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节, 这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之 为高电平,从而使数据传送可以继续进行。(其实这就是所谓的SCL为高电平时总线为空闲,为低电平总线为忙碌,该文字描述中,总线在忙于其它事物,所以拉低电压等待 当总线处理完事情时,拉高电压

单片机下使用IIC

纵饮孤独 提交于 2020-03-17 07:51:56
一、 IIC 总线有两根双向信号线,一根是数据线 SDA ,一根是时钟线 SCL 每根接到 IIC 总线上的器件都有唯一的地址 二、 IIC 通信协议的函数写法 1、 起始信号 2、 终止信号 3、 写数据 4、 读数据 5、 发送应答信号 6、 发送非应答信号 7、 等待应答 8、 检测 IIC 总线设备 三、 函数解析 1、 起始信号和终止信号 SCL 为高电平期间, SDA 线由高电平向低电平变化表示起始信号 SCL 为高电平期间, SDA 线由低电平向高电平变化表示终止信号 void i2c_Start(void) { /* 当SCL高电平时,SDA出现一个下跳沿表示I2C总线启动信号 */ SDA = 1; SCL = 1; i2c_Delay(); SDA = 0; i2c_Delay(); SCL = 0; i2c_Delay(); } void i2c_Stop(void) { /* 当SCL高电平时,SDA出现一个上跳沿表示I2C总线停止信号 */ SDA = 0; SCL = 1; i2c_Delay(); SDA = 1; i2c_Delay(); } 2、 应答和非应答 IIC 总线规定,每传送一字节的数据后都要有一个应答信号以确定数据传送是否被对方接收。 应答信号由接收设备产生,在 SCL 为高电平期间,接收设备将 SDA 拉低为低电平,表示数据传输正确

假期战略更新第二集——MPU6050六轴传感器模块在stm32平台的使用一(今天不学习,明天变垃圾)

China☆狼群 提交于 2020-03-06 08:56:27
这个也是上学期一直困扰我的一个问题,上学期想要巩固一下自己PWM和PID算法的基础,就搞了一个STM32控制的平衡车来玩,算法数学模型啥的都弄好之后,就出现了一个大问题,本人用的是stm32cubeMX来建立的工程项目,所以在IIC的部分就出现了一些问题,我看了写资料,总结了一下经验,下面就先讲讲我的主要经验: 1.MPU6050模块是什么? MPU6050模块是一个常用的六轴传感器模块,主要目的是获取以传感器为基点的欧拉角(偏航角、俯仰角、滚转角),可以理解为以传感器为中点,初始X正半轴与当前传感器前方所指的一个向量在XY平面的夹角,初始X正半轴与当前传感器在XZ平面的夹角,初始Y正半轴与当前传感器在YZ平面的夹角。这个想仔细理解的玩家朋友可以看看MPU6050的手册。该模块用过IIC总线和STM32进行通信。 2.MPU6050用来干嘛? 在文章开头我说我买了个stm32的平衡车,可以理解为硬件已经完全搭建好了,说到平衡车那就是普通的两个轮子那种,两个轮子不转,车肯定就站不稳,要车站稳的话就肯定要知道车的当前状态和什么情况是稳,什么情况是不稳,所以就用到了MPU6050的俯仰角。 3.MPU6050怎么用? 东西怎么用,还是要看芯片文档,现在就稍微总结一下MPU6050怎么用的,首先是通信方式,芯片把当前数据测量出来之后,就需要通过IIC总线发送给MCU进行处理

IIC总线协议

泪湿孤枕 提交于 2020-03-04 19:34:16
—— 即便这类文章多如牛毛,也只有当自己写时才能发现不足 —— 目录 IIC总线协议 简介 具体过程 起始和停止 数据传输 数据传输格式 IIC总线协议 简介 IIC (Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的 半双工、双向两线式同步串行总线 ,用于连接微控制器及其外围设备。 它是由双向数据线 SDA 和双向时钟 SCL 构成的串行总线,可发送和接收数据,两条线可以挂多个设备。 I2C 和 SPI 一样以主从的方式工作,不同于 SPI 一主多从的结构,它允许 同时有多个主设备存在 ,每个连接到总线上的器件都有 唯一的固化地址 ,主设备 启动数据传输并产生时钟信号 ,从设备 被主设备寻址 , 同一时刻只允许有一个主设备和一个从设备 。 总结:IIC允许多主从,但同一时刻只允许有一主一从。 I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。这些信号中, 起始信号是必需的 ,结束信号和应答信号都可以不要(最好不要省;如果要结束总线,可以给也可以不给应答;如果要继续读数据,就必须给出应答)。 起始和结束信号总是由主设备产生。 开始信号 :SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。 结束信号 :SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。 应答信号 :即ACK

FPGA和usb2.0 CY7C68013通信实现bulkloop

旧街凉风 提交于 2020-02-24 04:56:54
步骤 具体的FPGA代码 具体的usb固件程序和驱动 首先安装usb2.0芯片的电脑驱动,CySuiteUSB_3_4_7_B204.exe; win10下禁用系统签名,设置-更新和安全-恢复-高级启动-立即重启-疑难解答-高级选项-启动设置-重启-输入数字7-完成; 安装好的驱动目录下有大量的文件和程序资料,其中bulkloop.iic下载进去之后,可以实现如下功能 但要实现PC端发送信息到usb芯片,再通过FPGA转发回来,需要修改usb固件,不然默认程序会像上述那样自动转发; 针对cy7c68013的固件程序,我们只需要修改bulkloop项目中的bulkloop.c文件里的TD_Init和TD_Poll函数 这里都是站在PC的角度来看的输入和输出; 这个时候下载好fpga的程序之后,就可以实现和之前同样的收发功能; 问题: 尝试改用官方提供的CYstream.iic程序,测试新功能。但是使用官方的工具CyConsole下载IIC程序进入usb芯片,但是下载之后发现无法重新下载新的固件,CyConsole出现下载地址冲突,由于usb器件启动默认是IIC引导的,导致无法继续使用,除非对外部的IIC芯片拆下来重新刷写。我这里去掉了IIC器件和CY7C68013连接的跳线帽,让cy7c68013从自己的RAM引导,才可以重新使用。 来源: CSDN 作者: 暖暖的时间回忆 链接:

TC358775XBG转换芯片:MIPI DSI转LVDS(单路/双路),替代ICN6202芯片

喜夏-厌秋 提交于 2020-02-23 10:06:02
原厂:Toshiba 型号:TC358775XBG 功能:TC358775XBG是一颗将MIPI DSI信号转换成single/ dual -link LVDS的芯片,最高分辨率支持到1920x1200 MIPI接口: (1)、支持1/2/3/4 lane(s) data,Maximum bit rate of 1 Gbps/lane (2)、支持video mode(Non-Burst Mode with Sync Pulses、Non-Burst Mode with Sync Events)和commandmode两种格式 (3)、Supports video data formats : RGB565 16bits per pixel RGB666 18 bits per pixel RGB666 loosely packed 24 bits per pixel RGB888 24 bits per pixel LVDS接口 (1)、支持 single-link or dual-link (2)、最高像素时钟:135MHz (3)、单路LVDS最高分辨率1600x1200(实际应用的时候一般到720p) 双路LVDS最高分辨率1920x1200 (4)、支持LVDS格式: RGB666 18 bits per pixel RGB888 24 bits per pixel.

Linux 设备树 DTS DTB DTC

你。 提交于 2020-02-22 15:16:21
设备树(Device Tree) DTS(Device Tree Source) : 描述设备树的文件 DTS文件采用 树形结构描述板级设备 如:CPU数目,内存基地址,IIC接口的设备,SPI接口的设备 树干:系统总线 树支:IIC控制器,GPIO控制器,SPI控制器,SDMMC控制器,PCI总线 IIC分 :IIC1 和 IIC2 IIC1 接 FT5206 和 AT24C02 IIC2 接 MPU6050 设备树:描述板级硬件信息的文件,扩展名:.dts .dts:描述板级信息(IIC设备,SPI设备) .dtsi:描述SOC级信息(CPU,主频,外设控制器) DTS DTB DTC DTS 是设备树源码文件 DTB 是 DTS 编译后的二进制文件 DTC 工具 编译 DTB文件 # linux-5.5.4\linux-5.5.4\scripts\dtc\Makefile # SPDX-License-Identifier: GPL-2.0 # scripts/dtc makefile # SPDX许可证标识符:GPL-2.0 # 脚本 /dtc 生成文件 hostprogs-y := dtc always := $(hostprogs-y) # DTC工具依赖编译文件 .c dtc-objs:= dtc.o flattrree.o fstree.o data.o