杂记:Atmel sama5d3 Two-wire Interface (TWI)
2016-07-20 23:16
357 查看
Two-wire Interface (TWI)
概论
两线接口一根时钟线,一根数据线,最高波特率 400k兼容i2c
可为主机或者从机,多主机也支持
I2C Standard Atmel TWI
Standard Mode Speed (100 kHz) Supported
Fast Mode Speed (400 kHz) Supported
7- or 10-bit Slave Addressing Supported
START byte(1) Not Supported
Repeated Start (Sr) Condition Supported
ACK and NACK Management Supported
Slope Control and Input Filtering (Fast mode) Not Supported
Clock Stretching/Synchronization Supported
Multi Master Capability Supported
特点:
兼容i2c设备和atmel两线内存
一个两个或者三个字节的从机地址
连续读写操作
主机从机多主机模式支持
最高400k波特率
从模式下支持总招
主模式支持smbus
支持dma
寄存器写保护
Abbreviation Description
TWI Two-wire Interface
A Acknowledge
NA Non Acknowledge
P Stop
S Start
Sr Repeated Start
SADR Slave Address
ADR Any address except SADR
R Read
W Write
数据和时钟线都是双向线,同上拉电阻或者电流源连正极,空闲时是高电平。
从机需要配置io口为open-drain or open-collector
TWD and TWCK是复用的 需要配置为i2c线 且不能配置成open-drain
twi受Power Management Controller (PMC)控制,需要使能
twi有中断与Interrupt Controller相连,需要配置
Instance ID
TWI0 18
TWI1 19
TWI2 20
发送的数据必须是8bits长度,msb先发,每个字节都要有ack
每次传输的字节数目没有限制。
每次传输都由START开始STOP结束
twi的传输模式如下
主发送模式
主接收模式
多主发送
多主接收
从发送
从接收
TWI_MMR.DADR (+ IADRSZ + IADR if a 10-bit device is addressed):从机地址
TWI_CWGR.CKDIV + CHDIV + CLDIV:时钟波形模式
TWI_CR.SVDIS 非能从模式
TWI_CR.MSEN 使能主模式
如果已经是主模式,device address (DADR)可以直接设置不用非能主模式
主发模式
往这个Transmit Holding register (TWI_THR)写数据时, twi会发送一个START,
并且把DADR in TWI_MMR的7bit的地址发送出去,第8字节是用来确定传输方向的MREAD = 0 in TWI_MMR
twi需要从机在第9bit发送ack每个字节传输的最后,此时的主机会释放数据线
如果没有ack则Not Acknowledge flag (NACK) is set in the TWI Status Register (TWI_SR)
并且会发送STOP。NACK必须要读取TWI_SR才会清除,清除才能再次发送(TWI_THR)
当然如果使能中断Interrupt Enable register (TWI_IER),则会触发中断
如果有ack,则TWI_THR中字节会放入移位寄存器中,然后发送。
当一个ack被检测到,TXRDY会置位,除非TWI_THR有新的字节写入
主写之后,如果没有新字节,scl会一直被拉低,一直到新字节写入TWI_THR,或者一个STOP
置位 STOP bit in TWI_CR 会产生一个STOP
清除TXRDY,需要先置位TWI_CR.MSDIS然后置位TWI_CR.MSEN.
主收模式
先置位START bit发送一个START,然后是7bit的地址然后是 MREAD = 1 in TWI_MMR
第9位释放数据线,如果没有ack 置位 NACK bit in the TWI_SR
如果RXRDY bit is set in the TWI_SR,则Receive Holding Register (TWI_RHR)有数据
读走TWI_RHR,则RXRDY 自动清零。
如果是单字节读,不管internal address (IADR),START and STOP bits必须同时置位
多字节读,不管internal address (IADR),STOP bits要再倒数第二字节时置位
如果Receive Holding Register (TWI_RHR) is full (RXRDY high),则scl会一直被拉低
在接受最后一位的时候直到TWI_RHR被读走
警告:
置位STOP bit在读倒数第二个TWI_RHR之前在中断里面
twi支持7bit 和 10bit地址
内部地址
获取连续储存的 多个字节,先写入内部地址,然后读取数据
第二个start被称作“repeated start” (Sr)
内部地址在(TWI_MMR)中设置
如果不支持内部地址 则IADRSZ必须清零
比7bit多时,设置address size (IADRSZ)设置Internal Address register (TWI_IADR).
使用 dma发送 size-1
初始化dma
配置模式
使能dma
等待dma传输完成标志
非能dma
等待TXRDY flag in TWI_SR
置位 STOP bit in TWI_CR.
写最后一个字节到TWI_THR
等待TXCOMP flag to be raised in TWI_SR
dma接收 size-2
初始化dma
配置模式
使能dma
主模式下写START bit in the TWI_CR
等待dma传输完成标志
非能dma
等待RXRDY flag in TWI_SR
发送STOP bit in TWI_CR
读TWI_RHR
等待RXRDY flag in TWI_SR
读TWI_RHR
等待TXCOMP flag to be raised in TWI_SR
概论
两线接口一根时钟线,一根数据线,最高波特率 400k兼容i2c
可为主机或者从机,多主机也支持
I2C Standard Atmel TWI
Standard Mode Speed (100 kHz) Supported
Fast Mode Speed (400 kHz) Supported
7- or 10-bit Slave Addressing Supported
START byte(1) Not Supported
Repeated Start (Sr) Condition Supported
ACK and NACK Management Supported
Slope Control and Input Filtering (Fast mode) Not Supported
Clock Stretching/Synchronization Supported
Multi Master Capability Supported
特点:
兼容i2c设备和atmel两线内存
一个两个或者三个字节的从机地址
连续读写操作
主机从机多主机模式支持
最高400k波特率
从模式下支持总招
主模式支持smbus
支持dma
寄存器写保护
Abbreviation Description
TWI Two-wire Interface
A Acknowledge
NA Non Acknowledge
P Stop
S Start
Sr Repeated Start
SADR Slave Address
ADR Any address except SADR
R Read
W Write
数据和时钟线都是双向线,同上拉电阻或者电流源连正极,空闲时是高电平。
从机需要配置io口为open-drain or open-collector
TWD and TWCK是复用的 需要配置为i2c线 且不能配置成open-drain
twi受Power Management Controller (PMC)控制,需要使能
twi有中断与Interrupt Controller相连,需要配置
Instance ID
TWI0 18
TWI1 19
TWI2 20
发送的数据必须是8bits长度,msb先发,每个字节都要有ack
每次传输的字节数目没有限制。
每次传输都由START开始STOP结束
twi的传输模式如下
主发送模式
主接收模式
多主发送
多主接收
从发送
从接收
TWI_MMR.DADR (+ IADRSZ + IADR if a 10-bit device is addressed):从机地址
TWI_CWGR.CKDIV + CHDIV + CLDIV:时钟波形模式
TWI_CR.SVDIS 非能从模式
TWI_CR.MSEN 使能主模式
如果已经是主模式,device address (DADR)可以直接设置不用非能主模式
主发模式
往这个Transmit Holding register (TWI_THR)写数据时, twi会发送一个START,
并且把DADR in TWI_MMR的7bit的地址发送出去,第8字节是用来确定传输方向的MREAD = 0 in TWI_MMR
twi需要从机在第9bit发送ack每个字节传输的最后,此时的主机会释放数据线
如果没有ack则Not Acknowledge flag (NACK) is set in the TWI Status Register (TWI_SR)
并且会发送STOP。NACK必须要读取TWI_SR才会清除,清除才能再次发送(TWI_THR)
当然如果使能中断Interrupt Enable register (TWI_IER),则会触发中断
如果有ack,则TWI_THR中字节会放入移位寄存器中,然后发送。
当一个ack被检测到,TXRDY会置位,除非TWI_THR有新的字节写入
主写之后,如果没有新字节,scl会一直被拉低,一直到新字节写入TWI_THR,或者一个STOP
置位 STOP bit in TWI_CR 会产生一个STOP
清除TXRDY,需要先置位TWI_CR.MSDIS然后置位TWI_CR.MSEN.
主收模式
先置位START bit发送一个START,然后是7bit的地址然后是 MREAD = 1 in TWI_MMR
第9位释放数据线,如果没有ack 置位 NACK bit in the TWI_SR
如果RXRDY bit is set in the TWI_SR,则Receive Holding Register (TWI_RHR)有数据
读走TWI_RHR,则RXRDY 自动清零。
如果是单字节读,不管internal address (IADR),START and STOP bits必须同时置位
多字节读,不管internal address (IADR),STOP bits要再倒数第二字节时置位
如果Receive Holding Register (TWI_RHR) is full (RXRDY high),则scl会一直被拉低
在接受最后一位的时候直到TWI_RHR被读走
警告:
置位STOP bit在读倒数第二个TWI_RHR之前在中断里面
twi支持7bit 和 10bit地址
内部地址
获取连续储存的 多个字节,先写入内部地址,然后读取数据
第二个start被称作“repeated start” (Sr)
内部地址在(TWI_MMR)中设置
如果不支持内部地址 则IADRSZ必须清零
比7bit多时,设置address size (IADRSZ)设置Internal Address register (TWI_IADR).
使用 dma发送 size-1
初始化dma
配置模式
使能dma
等待dma传输完成标志
非能dma
等待TXRDY flag in TWI_SR
置位 STOP bit in TWI_CR.
写最后一个字节到TWI_THR
等待TXCOMP flag to be raised in TWI_SR
dma接收 size-2
初始化dma
配置模式
使能dma
主模式下写START bit in the TWI_CR
等待dma传输完成标志
非能dma
等待RXRDY flag in TWI_SR
发送STOP bit in TWI_CR
读TWI_RHR
等待RXRDY flag in TWI_SR
读TWI_RHR
等待TXCOMP flag to be raised in TWI_SR
相关文章推荐
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 安卓--SQLite数据库的简单使用(说明+代码)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- 杂记:Atmel sama5d3 Two-wire Interface (TWI)
- leetcode刷题,总结,记录,备忘 357
- DataCastle[猜你喜欢]赛事算法分享
- 无锁同步-JAVA之Volatile、Atomic和CAS
- 指针变量
- 公开课视频-《第08章 部署-Citrix-桌面虚拟化-XenDesktop 7.7》
- linux下的php环境搭建
- Android 模拟表单请求及servlet服务器对接示例
- HDU4920 矩阵乘法
- KMP算法入门理解<一>:
- Java学习笔记