ARM手记之芯唐M0系列
可以采用中断或检测USB_EVF来监测USB通信,在USB通信发生时,USB_EVF 由硬件置1,并向CPU发送中断请求。
USB主机向设备控制器请示数据时,用户需要准备相关的数据给端点缓存. 在缓冲请求数据后,用户需要写入实际数据长度给MAXPLD寄存器。一旦这个寄存器被写入数据,内部信号“In_Rdy”会被设置,当收到主机相关的IN token之后,缓冲数据将被立刻传送。在传送制定数据之后,信号 “In_Rdy”会由硬件自动清除。
USB主机要发送数据到设备控制器的OUT端点,硬件将这些数据存在指定的端点缓存里,通信完成后,硬件在MAXPLD记录数据长度,并发送“Out_Rdy”信号,这避免硬件在用户没有取走当前数据时接收下一个数据。一旦用户处理了这个通信时,由软件写入相关的寄存器“MAXPLD”来设置“Out_Rdy” 信号以接收下一次通信。
15.I2C 总线控制器 (主机/从机)
I2C 为双线,双向串行总线,I2C 总线上数据的传输速率在标准模式下可达100kbit/s 在快速模式下可达400kbit/s 在高速模式,直至 1.0 Mbit/s 的增强高速模式。
在连接到总线的器件间传递信息每个器件都有一个唯一的地址识别。数据在主机和从机间通过SCL时钟线控制在SDA数据线上实现一字节一字节的同步传输,数据由最高位MSB开始传输,每个字节包含8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个响应位。如果从机要完成一些其他功能后,才能接收或发送下一个完整的数据。字节可以使时钟线SCL 保持低电平迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后,数据传输继续。
片上I2C逻辑提供符合I2C总线标准的串联标准接口,I2C接口自动处理字节传输,将I2CON的ENS1位设置为1,即可使能该端口,I2C H/W接口通过SDA与SCL两个引脚连到I2C总线。用于I2C操作的两个引脚需要上拉电阻,因为这两个引脚为开漏脚,在I/O引脚作为I2C端口使用时,用户必须预先设置引脚功能为I2C功能。
1)I2C协议
通常标准I2C传输协议包含四个部分:
- 起始信号或重复起始信号
-从机地址传输
-数据传输
-停止信号
2)I2C寄存器
NUC1xx共有6个特殊功能寄存,用于I2C通讯: I2CON(控制寄存器 C0H), I2STATUS(状态寄存器 BDH), I2DAT(数据寄存器 BCH), I2ADDR(包括I2CADDRn和I2CADRMn,地址寄存器 C1H), I2CLK(时钟速率寄存器 BEH) 和 I2TOC(定时计数寄存器 BFH)。寄存器的第31位至第8位都是保留的,不具备任何功能。
当ENS1置1,I2C口使能后,内部状态由 I2CON 和 I2C总线上状态控制。当有新的状态发生后,会存储到 I2STATUS, I2C 中断标志(SI) 也会自动置起。若此时 EI2 被设定为高,I2C中断会被响应。
3)I2C操作模式
5种操作模式:主机/传输,主机/接收,从机/传输,从机/接收和GC 模式。
16.串行外围设备接口(SPI)控制器
SPI接口是工作于全双工模式下的同步串行数据传输接口。共支持四组双向主/从机模式传输。包括4组SPI控制器,将从外设得到的数据进行串并转换,或将数据进行并串转换,发送到外设。每组SPI控制可以被作为一个主机,驱动最多2个外部从设备,还可以被设置为外围设备的从机。
该主/从机内核包含2组32位输出/输入数据缓存,可支持突发传输(burst mode)模式,并支持各种不同长度的变量数据模式,最多可支持64位数据传输。
该控制器支持不同串行时钟,支持1位、2位数据传输模式。支持MSB 或 LSB 为最先传输模式。支持2个通道的PDMA请求,一个用于发送,一个用于接收。
1)SPI作为主机时,与 一个从机设备通信如下:
a.对divIDER内写入值,确定传输频率。
b.将主机模式的相应设置写入SSR,设定 ASS = 0, SS_LVL = 0 且SSR[0] 或SSR[1] =1 用以使能模块。
c.将主机模式的相应设置写入寄存器SPI_CNTRL。
d.如果SPI主机要发送一个字节的数据到外设,则将所要发送的数据写入寄存器SPI_Tx0。
e.如果SPI主机只是从外设接收一个字节的数据,不必管被传输出去的数据是什么,只需向寄存器SPI_TX0写入0xff。
f.使能GO_BUSY位(SPI_CNTRL[0]=1),以开始SPI接口的数据传输。
g.等到SPI中断发生,或检测GO_BUSY位直到被硬件自动清0。
h.从寄存器SPI_RX0[7:0]读出所接收到的一个字节的数据。
i.重复步骤d,继续其他数据的传输,或设置SSR[0]为0以停止外设。
2)SPI作为从机时
a.设置从机有效电平位SS_LVL(SPI_SSR[2]=1)与从机选择电平触发位SS_LTRIG(SPI_SSR[4]=1)使从机选择信号为高电平触发。
b.将从
ARM芯唐M0系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)