新唐科技Cortex-M0 培训资料.ppt

上传人:韩长文 文档编号:5028647 上传时间:2020-01-29 格式:PPT 页数:25 大小:1.23MB
返回 下载 相关 举报
新唐科技Cortex-M0 培训资料.ppt_第1页
第1页 / 共25页
新唐科技Cortex-M0 培训资料.ppt_第2页
第2页 / 共25页
新唐科技Cortex-M0 培训资料.ppt_第3页
第3页 / 共25页
新唐科技Cortex-M0 培训资料.ppt_第4页
第4页 / 共25页
新唐科技Cortex-M0 培训资料.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《新唐科技Cortex-M0 培训资料.ppt》由会员分享,可在线阅读,更多相关《新唐科技Cortex-M0 培训资料.ppt(25页珍藏版)》请在三一文库上搜索。

1、NuMicro Cortex-M0 I2C,议题,I2C协议 特性 寄存器映射 I2C应用 Q&A,I2C-Bus 一般特性,一种两线双向总线,由SDA (data) 和 SCL (clock)组成, 可以包含多个masters 和多个slaves设备 SDA 和SCL都是双向的,Open-Drain (Quasi-mode)驱动类型, 经过上拉电阻连到一个正向电压 数据传输通过SCL同步,I2C 协议,产生START 或者重复START 信号 传输从设备地址 数据传输 产生STOP 信号,START 信号代表传输开始,Mater 传输一个7-bit 的Slave 地址和一个读/写比特,数据传

2、输阶段 (例如:1 个字节的数据),STOP 信号代表传输结束或者重复的 START 信号代表下一个传输开始,Start, Repeated START 和 Stop,master 发出START信号初始化一次传输 master可以发出Repeated START信号连续传输 master 可以通过STOP信号来结束传输,应答,每个传输的字节都在第9个SCL时钟的时候,跟一个应答比特. 如果从设备发出Not Acknowledge (NACK)信号, 主设备可以发送一个STOP信号来中断数据传输, 也可以产生重复START 信号来启动新的传输. 如果主设备作为接收设备发送了Not Acknow

3、ledge (NACK) 信号给从设备, 从设备释放SDA 线, 让主设备可以产生 STOP 或者 重复START 信号.,应答,NACK: High level,ACK: Low level,特性(1/2),和Philips I2C 标准兼容, 支持主/从 模式 支持主/从传输速度达1Mbit/s ( Fast-mode Plus ) 主和从设备之间双向数据传输 同时传输的主设备间仲裁,总线上的串行数据不会破坏 串行时钟同步可以让在同一个串行总线上的设备有不同的传输速率 内嵌一个14比特超时 计数器,如果I2C总线挂起并且超时计数器溢出,I2C中断将发生. 支持时钟除频,允许灵活的速率控制,

4、特性(2/2),输出高需要加外部上拉电阻 支持7比特寻址模式 I2C总线控制器支持多地址识别 ( 四个从设备地址,带掩码功能) 操作模式 主传输 主接收 从传输 从接收 GC 呼叫,Slave 模式地址设定,可以识别多个地址 使用2组寄存器来设定slave模式时的地址 I2CADDRx: 4 个Slave 地址寄存器 I2ADRMx: 4 个Slave地址mask 寄存器,寄存器映射,I2C 控制寄存器,Assert ACK,I2SSTATUS 状态改变,在master模式时发送“STOP” 信号,当总线空闲时发送“START” 或者“Repeat START” 信号,I2C hardware

5、 enable,I2C interrupt enable,I2C 控制寄存器(I2CON),EI: enable interrupt. happen when status change ENSI: enable I2C controller STA:发送Start信号 STO: 发送Stop信号 SI: I2C interrupt flag. set when status change. 这个bit被置,I2C将停止动作 AA: 回Ack给发送方。如果SI清除之后,没有set AA bit, 收到数据的时候将回NACK,I2C 状态寄存器(I2CSTATUS),8 比特只读寄存器 3 LS

6、B 总是0 26 个状态 硬件设定 SI标志以后,状态码可以从这个寄存器得到 “00H” 代表总线出错,Master 发送数据到Slave,上面不同阶段对应的4个比特 STA,STO,SI,AA的值,1,0,0,x,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,SI 标志由硬件设定,TRM 5.6.6,Master Transmit Mode,I2C 超时方块图,14 比特计数器 可以避免 I2C 总线hang 住,I2C 示例代码 (1/8),读 24LC64(I2C Serial EEPROM) 写 24LC64,I2C示例代码 (2/8),I2C示例代码 (3/8),v

7、oid Write_24LC64(uint32_t address, uint8_t data) uint32_t u32HCLK; u32HCLK = DrvSYS_GetHCLK() * 1000; /*Open I2C0 and set clock = 100Kbps */ DrvI2C_Open(I2C_PORT0, u32HCLK, 100000); /send i2c start DrvI2C_Ctrl(I2C_PORT0, 1, 0, 0, 0); /set start while (I2C0-CON.SI = 0); /poll si flag /send writer com

8、mand I2C0-DATA = 0XA0; /send writer command DrvI2C_Ctrl(I2C_PORT0, 0, 0, 1, 0); /clr si flag while( I2C0-CON.SI = 0 ); /poll si flag /send address high I2C0-DATA = (address8) /poll si flag,I2C示例代码 (4/8),/send address low I2C0-DATA = address ,I2C示例代码 (5/8),uint8_t Read_24LC64(uint32_t address) uint32

9、_t u32HCLK; uint8_t flash_data; u32HCLK = DrvSYS_GetHCLK() * 1000; /* Open I2C0 and set clock = 100Kbps */ DrvI2C_Open(I2C_PORT0, u32HCLK, 100000); /send i2c start DrvI2C_Ctrl(I2C_PORT0, 1, 0, 0, 0); /set start while (I2C0-CON.SI = 0); /poll si flag /send writer command I2C0-DATA = 0XA0; DrvI2C_Ctrl

10、(I2C_PORT0, 0, 0, 1, 0); /clr si while( I2C0-CON.SI = 0 ); /poll si flag /send address high I2C0-DATA = (address8) /poll si flag,I2C示例代码 (6/8),/send address low I2C0-DATA = address,I2C示例代码 (7/8),/send i2c stop DrvI2C_Ctrl(I2C_PORT0, 0, 1, 1, 0); /clr si and set stop DrvI2C_Close(I2C_PORT0); return flash_data; ,I2C示例代码 (8/8),/*- MAIN function -*/ int32_t main (void) UINT32_T Temp_Value; / Set I2C I/O DrvGPIO_InitFunction(FUNC_I2C0); /read address 0x00000000 to Temp_value Temp_value=Read_24C64(0x00000000); /write 0x55 to address 0x0000000 Write_24C64(0x00000000, 0x55); ,Q&A,Thank You,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1