新唐科技CortexM0 培训资料.ppt

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

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

1、NuMicro Cortex-M0I2C,议题,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 地址和一个读/写比特,数据传输阶段(例如:1 个字节的数据)

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

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

4、识别(四个从设备地址,带掩码功能)操作模式主传输主接收从传输从接收GC 呼叫,Slave 模式地址设定,可以识别多个地址使用2组寄存器来设定slave模式时的地址I2CADDRx:4 个Slave 地址寄存器I2ADRMx:4 个Slave地址mask 寄存器,寄存器映射,I2C 控制寄存器,Assert ACK,I2SSTATUS 状态改变,在master模式时发送“STOP”信号,当总线空闲时发送“START”或者“Repeat START”信号,I2C hardware enable,I2C interrupt enable,I2C 控制寄存器(I2CON),EI:enable inte

5、rrupt.happen when status changeENSI:enable I2C controllerSTA:发送Start信号STO:发送Stop信号SI:I2C interrupt flag.set when status change.这个bit被置,I2C将停止动作AA:回Ack给发送方。如果SI清除之后,没有set AA bit,收到数据的时候将回NACK,I2C 状态寄存器(I2CSTATUS),8 比特只读寄存器3 LSB 总是026 个状态硬件设定 SI标志以后,状态码可以从这个寄存器得到“00H”代表总线出错,Master 发送数据到Slave,上面不同阶段对应的

6、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),void Write_24LC64(uint32_t address,uint8_t data)uint32_t u32HCLK;u32HCLK=DrvSYS_GetHC

7、LK()*1000;/*Open I2C0 and set clock=100Kbps*/DrvI2C_Open(I2C_PORT0,u32HCLK,100000);/send i2c startDrvI2C_Ctrl(I2C_PORT0,1,0,0,0);/set startwhile(I2C0-CON.SI=0);/poll si flag/send writer commandI2C0-DATA=0XA0;/send writer commandDrvI2C_Ctrl(I2C_PORT0,0,0,1,0);/clr si flagwhile(I2C0-CON.SI=0);/poll si

8、 flag/send address highI2C0-DATA=(address8)/poll si flag,I2C示例代码(4/8),/send address lowI2C0-DATA=address,I2C示例代码(5/8),uint8_t Read_24LC64(uint32_t address)uint32_t u32HCLK;uint8_t flash_data;u32HCLK=DrvSYS_GetHCLK()*1000;/*Open I2C0 and set clock=100Kbps*/DrvI2C_Open(I2C_PORT0,u32HCLK,100000);/send

9、i2c startDrvI2C_Ctrl(I2C_PORT0,1,0,0,0);/set startwhile(I2C0-CON.SI=0);/poll si flag/send writer commandI2C0-DATA=0XA0;DrvI2C_Ctrl(I2C_PORT0,0,0,1,0);/clr si while(I2C0-CON.SI=0);/poll si flag/send address highI2C0-DATA=(address8)/poll si flag,I2C示例代码(6/8),/send address lowI2C0-DATA=address,I2C示例代码(

10、7/8),/send i2c stop DrvI2C_Ctrl(I2C_PORT0,0,1,1,0);/clr si and set stopDrvI2C_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 0 x00000000 to Temp_valueTemp_value=Read_24C64(0 x00000000);/write 0 x55 to address 0 x0000000Write_24C64(0 x00000000,0 x55);,Q&A,Thank You,

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号