iic

ArduinoUno和Leonardo的区别

两盒软妹~` 提交于 2019-11-30 15:18:32
学习过 Arduino 的同学对ArduinoUno和Lenardo的不同点会有所了解,但说起具体的区别估计还是很多人答不上来,今天我们就详细解释下Arduino Uno和Leonardo的不同。 我们从四个方面来详细解释两者区别: 第一:中断的区别 Uno只提供两路中断。Leonardo提供5路。 当年Leonardo靠着多出3个中断的特点在Uno搬砖的时候横着走了好几次。但最终还是被包工头解决了这个不和谐的地方,包工头拍打着Leonardo的肩膀,意味深长的说:你的中断,是D0到D3,D0和D1是UART接口,D2和D3是IIC接口UART几乎是每次都要用到,所以D0和D1有点不中用。Uno的两路中断只和GPIO复用,因此完全不存在矛盾。 第二:USB支持的不同 Uno有独立的USB转串口芯片,所以在重启单片机时基本可以击败全国百分之九十九点九的Leonardo。而Leonard只用了一款支持USB的单片机每次reset,电脑上的串口也要被重新载入一次,插入电脑后,会先产生一个串口号,然后完全加载完之后,会变成另外一个串口号加载速度也非常慢,8s延时。试想,哪个追求速度的男人会喜欢。。。 第三:IIC接口区别 Uno的IIC接口和AD4、AD5复用,6路AD被占用4个基本问题不大。Leonardo的IIC和另外两路中断复用。 4.库的使用 Uno的SPI直接有库可以用

iic通信协议是什么

谁说胖子不能爱 提交于 2019-11-30 13:32:43
iic通信协议是什么   IIC协议是二线制,信号线包含SDA和SCL,且信号线是双向的,开路结构,需要通过上拉电阻到VCC,具体的电阻值影响的是信号反应速度和驱动能力。   首先,IIC通信与UART,还有SPI统称为串行接口通信,不过它们之间还是有区别的,如UART的负电平逻辑,还有UART通信不需要时钟,只需要特定的波特率即可,SPI与IIC都可以有一个主机,多个从机的情况,不过IIC适用于短距离传输,如片间通信,摄像头的配置等场景。   要搞定IIC首先来看IIC的硬件接口:      如图所示,我们知道IIC一个主机可以悬挂多个从机,所以地址线A2,A1,A0 可以实行片选的功能,那么WP这个引脚的功能就是当WP悬空或者接地的时候,表示这时的EEPROM既可以读,也可以写,当WP接电源时,则只可以读而不能写。   SCL与SDL这两个引脚,必须上拉,否则驱动能力不够,无法进行正常的IIC通信。   OK,硬件接口已经介绍清楚了,那么我们现在开始来看协议了。   首先IIC分为字节读写和页面读写,首先来看字节读写的协议:      如上图所示,如果我们要向EEPROM中写入一个字节的数据,得有如下几个步骤:   1.开始信号——在SCLK的高电平器件,拉低SDA的信号(由1 变为0)。   2.控制字节——即器件地址,就是你操作那一块EEPROM。   3.ACK信号—

iic与spi这两种通讯协议

ぃ、小莉子 提交于 2019-11-30 07:57:29
IIC vs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。IIC 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了 ‘Inter-Integrated Circuit’,IIC 或 IIC ,一种只使用二根线接连所有外围芯片的总线协议。最初的标准定义总线速度为100kbps。 经历几次修订,主要是1995年的400kbps,1998的3.4Mbps。有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上

Arduino基础入门—3.连接 IIC 1602 LCD显示文字

╄→гoц情女王★ 提交于 2019-11-30 03:51:44
1. IIC转接板介绍 Arduino Uno R3开发板的外部IO口是非常有限的。在驱动LCD1602时,尽管我们的数据线使用了4线,相对于8线方式减少一半,但是在需要外接多种传感器的应用中,4线驱动还是占用了过多的IO。本篇介绍LCD1602的IIC驱动方式,通过IIC转接板使用IIC接口,只占用2个IO口就能驱动LCD1602。 IIC「Inter-Integrated Circuit 集成电路总线」是一种串行通信总线,应用于板载低速设备间的通讯。由飞利浦公司开发的这一通讯协议,其目的就是为了简化系统硬件设计,减少设备间的连线。 IIC串行总线有两根信号线,一根是双向的数字线SDA,另一根是时钟线SCL,每个IIC设备都有自己的地址,IIC总线上多个设备间通过设备地址进行区别。 上图为本篇使用的IIC转接板,直接焊接于LCD1602。可通过跳线帽设置是否开启背光,通过蓝色电位器调节对比度。IIC设备地址可通过短路A0/A1/A2修改,默认地址0x27 2. 安装驱动库 在Arduino IDE中点击「项目」—「加载库」—「管理库」,查找「LiquidCrystal_I2C」,选择最新版本进行安装。(这个得慢慢找) 3.实验材料 Uno R3开发板 配套USB数据线 面包板及配套连接线 LCD1602液晶屏带IIC转接板 4.实验步骤 4.1.电路连接。 IIC转接板的VCC

东芝开发板驱动OLED模块显示LOGO图片

一笑奈何 提交于 2019-11-29 16:37:15
前言 在之前的两篇评测文章: 使用系统定时器SysTick实现精确延时微秒和毫秒函数 东芝MCU实现位带操作 介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO,大大简化了GPIO的输入输出控制。有了精确延时函数+GPIO控制,那么就可以使用通用GPIO模拟的方式,来驱动各种接口的显示器件传感器等。本文以通用GPIO模拟IIC协议,来驱动0.96寸OLED模块为例,来实现OLED显示字符、LOGO图片等等。 OLED屏简介 对于显示屏,我想大家首先想到的是LCD液晶,而OLED显示屏属于新型显示器件,被称为“梦幻显示器”,相比于AMOLED具有反应速度较快、对比度更高、视角较广等特点。 优点 无需背光灯,可以做的更薄,厚度可以控制在1mm以内,而LCD屏幕厚度通常在3mm左右 面板自主发光,显示黑色几乎不耗电,可以自由弯曲,功耗低,视角广。 反应速度是LCD屏幕的千分之一,显示色彩更丰富,更亮,在白天户外也可以清晰的看到屏幕。 耐低温,可以在-40℃环境下正常显示内容。 缺点 相比LCD屏幕,OLED制造技术还不够成熟,量产率低、成本高 早期存在烧屏、红线等寿命较短的问题,但是经过不断改良和研发,现在的OLED屏幕已经相当成熟、稳定。 价格还是偏贵,以国产中景园的0.96寸单色OLED,价格在15RMB左右,而全彩的同尺寸OLED模块

米联客 ZYNQ/SOC 精品教程 S02-CH12 I2C读写 RTC时钟实验

房东的猫 提交于 2019-11-29 00:20:48
软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛: www.osrc.cn 答疑解惑专栏开通,欢迎大家给我提问!! 12.1 概述 趁热打铁,我们刚刚在上一节课掌握了I2C利用ZYNQ I2C总线控制器读写EEPROM,本节课继续利用I2C总线控制器实现对RTC时钟芯片,DS1307的读写访问。有了前面的基础,这节课内容学习起来很轻松。 12.2 RTC时钟DS1307介绍 DS1307是低功耗、两线制串行读写接口、日历和时钟数据按BCD码存取的时钟/日历芯片。它提供秒、分、小时、星期、日期、月和年等时钟日历数据。另外它还集成了如下几点功能: (1)56 字节掉电时电池保持的NV SRAM 数据存储器 (2)可编程的方波信号输出 (3)掉电检测和自动切换电池供电模式 S1307的寄存器地址空间如下,我们的代码也就是读写一下地址空间。 地址空间中详细的参数定义如下表 写时序如下: 写时序很容易理解,和我们前面写EEPROM一样,先发送器件地址为1101000,再发送寄存器的地址,之后是连续写数据。 读时序如下: 这里读的时序有点没描述清楚,读时序前首先还要进行一次写寄存器起始地址的设置。比如代码,首先是写器件地址,并且指定标记读寄存器的其实寄存器地址为0x00,然后从标记的0x00读7个字节的数据

协议——SCCB与IIC的区别

こ雲淡風輕ζ 提交于 2019-11-27 02:27:42
  SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV(OmniVision的简称)公司定义和发展的三线式串行总线,该总线控制着摄像头大部分的功能,包括图像数据格式、分辨率以及图像处理参数等。结构框图如下所示:   OV公司为了减少传感器引脚的封装,现在SCCB总线大多采用两线式接口总线。OV7725使用的是两线式接口总线,该接口总线包括SIO_C串行时钟输入线和SIO_D串行双向数据线,分别相当于IIC协议的SCL信号线和SDA信号线。   由此可见,SCCB就是改编版的IIC,完全可以按照IIC来理解,下面仔细讲解SCCB的时序以及和IIC的不同之处。 一、SCCB起始和结束(与IIC完全一致)    起始:SIO_C为高时,SIO_D由高拉低。   停止:SIO_C为高时,SIO_D由低拉高 。 二、SCCB写(与IIC完全一致)   ID Address(W)里面就已经包括进了IIC中的“读写控制位”,所以没有额外写出。   即: start + phase_1 + phase_2 + phase_3 + stop   “X”的意思是“don't care”,该位是由从机发出应答信号来响应主机表示当前ID Address、Sub-address和Write Data是否传输完成,但是从机有可能不发出应答信号,因此主机(此处指FPGA

IIC通信协议

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-26 13:29:14
本文仅作为学习笔记 IIC协议: 和URAT的RXD、TXD一样,IIC也是由两根线构成: 一根SCL(时钟线)、一根SDA(数据线) 总线(无数据收发的情况)空闲状态,SCL和SDA为高电平 IIC一个写数据需要:启动信号——发送地址——发送数据——结束信号 起始和结束信号产生条件:总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件,开始进行IIC传输;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件,结束IIC传输。 在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。 起始和结束如图所示 : 在了解起始条件和停止条件后,我们再来看看在这个过程中数据的传输是如何进行的。前面我们已经提到过,数据传输以字节为单位。主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位, 此时才认为一个字节真正的被传输完成。当然,并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否 定应答位。数据传输的过程如图所示: 在前面我们还提到过