UART (Universal Asynchronous Receiver/Transmitter )通用异步收发器,用于控制计算机和串行设备的接口。
JTAG,它是Joint Test Action Group缩写,是IEEE的标准规范,ARM7TDMI内部提供了3个JTAG型的扫描链,可以进行调试和配置嵌入式的ICE-RT逻辑。 JTAG仿真器也称为JTAG调试器,是通过ARM芯片上的JTAG边界扫描口进行调试的设备。JTAG仿真器比较便宜,连接比较方便。它可以通过现有的JTAG边界扫描与ARM CPU核进行通信,属于完全非插入式调试。它无需目标存储器,不占用目标系统的任何端口。
PLL 是 Phase-Locked Loop(锁相环)的缩写。什么是锁相环?锁相环是指一种电路或者模块,它用于在通信的接收机中,其作用是对接收 到的信号进行处理,并从其中提取某个时钟的相位信息。或者说,对于接收到的信号,仿制一个时钟信号,使得这两个信号从某种角度来看是同步的(或者说,相干的)。
名词解释
IRDA1.0。为了建立一个统一的红外数据通讯的标准,1993年,由HP、COMPAQ、INTEL等二十多家公司发起成立了红外数据协会(Infrared Data Association,简称IRDA),1993年6月28日,来自50多家企业的120多位代表出席了红外数据协会的首次会议,并就建立统一的红外通讯标准问题达成了一致。一年以后,第一个IRDA的红外数据通讯标准发布,即IRDA1.0。
IIS(Integrate Interface of Sound)接口即集成音频接口 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。
串行通信概述
串行通信:就是使数据一位一位地进行传输而实现的通信。
优点:传输线少、成本低。特别适合远距离传送。
缺点:速度慢。
串行数据传送模式:单工、半双工、全双工
串行通信方式:同步通信、异步通信
RS232简介
RS-232C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。
串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。
RS-232C接口规格
RS-232C所用的驱动芯片通常以±12V的电源来驱动信号线,但是实际上,因为传输线的连接状态及接收端负载阻抗的影响,均会造成电压的下降,但最低仍不得低于±5V以下。

RS-232C接口信号

UART简介
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器和其它器件,如EEPROM通信。
UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是7个或8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。
接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志。
UART是计算机中串行通信端口的关键部分。在计算机中,UART相连于产生兼容RS232规范信号的电路。RS232标准定义逻辑“1”信号相对于地为3到25伏,而逻辑“0”相对于地为-3到-25伏。所以,当一个微控制器中的UART相连于PC时,它需要一个RS232驱动器来转换电平。
S3C44B0X内部集成的UART 两个异步串口(SIO):每个SIO可以操作在中断模式或DMA模式。
波特率:最大为115.2kbps。
FIFO:每个SIO通道包含都有一个16字节的接收与发送FIFO缓冲区。
每个UART模块包含4个部件:
(1)波特率发生器:MCLK作为时钟源。
(2)发送器:可以产生暂停条件,暂停条件强制串口输出保持在逻辑0状态比一帧长的时间。
(3)接收器:可以检测溢出错误、奇偶错误、frame错误和暂停条件,其中每一个设置一个错误标志。
(4)控制单元:发送器和接收器包含16字节的FIFO和移位寄存器。要被发送的数据首先被写入FIFO,然后被复制到发送移位寄存器中,最后从数据输出端口(TxDn)依次被移位输出;被接收的数据也同样从数据接收端口(RxDn)依次被移位输入到移位寄存器,然后被复制到FIFO中。
UART操作
数据发送 :数据发送的帧格式可编程,包含一个起始位、5~8个数据位、一个可选的奇偶位和1~2个停止位,通过线控制寄存器(UCONn)设置。能产生发送中止条件。通常在一帧传输数据完整地传输完之后,再通过这个全0状态将中止信号发送给对方。
数据接收 :与数据发送数据格式相同,可以检测到溢出错误、奇偶校验错误、帧错误和中止状况。
自动流控制(AFC):UART连接UART时使用,用nRTS (发送请求信号)和nCTS(清除发送信号)信号进行自动流控制。自动流控制时,nRTS由接收条件控制,发送运行由nCTS信号控制,发送时当nCTS信号有效时(意味着对方的UART准备好接收数据),发送器传输数据到FIFO中。在接收数据时,当FIFO有多于两个字节的空间时,nRTS激活(指示接收FIFO准备好接收数据),FIFO剩余空间在一个字节以下时必须将nRTS清0,说明“不能再接收”。
非自动流控制:UART连接MODEM时使用,通过软件控制nRTS和nCTS。
调制解调器接口:用nRTS、nCTS、nDSR、nDTR、DCD和nRI信号。AFC不支持RS-232C接口。
错误状态描述
① 溢出错误:新的数据已经覆盖了旧的数据,因为旧的数据没有及时被读入。
② 奇偶校验错误:接收器检测到了意料之外的奇偶校验结果。
③ 帧错误:接收到的数据没有有效的停止位。
④ 中止状况:RxDn的输入被保持为0状态的时间超过了一个帧传输的时间。
⑤接收超时:在FIFO模式下,接收FIFO不应为空,但当接收器在3个字时间内都没有接收到任何数据时,就认为发生了接收超时状况。
中断/DMA请求产生器
每个UART都有7个状态信号:
接收FIFO/缓冲区数据准备好
发送FIFO/缓冲区空
发送移位寄存器空
溢出错误
奇偶校验错误
帧错误
中止
接收中断:当接收器要将接收移位寄存器的数据送到接收FIFO,会激活接收FIFO满状态信号,如果是中断模式,会引发中断。
发送中断:当发送器从发送FIFO中取出数据送到发送移位寄存器,那么FIFO空状态信号将会被激活。如果是中断模式,会引发中断。
如果接收/发送是DMA模式,“接收FIFO满”和“发送FIFO空”状态同样可以产生DMA请求信号。
与FIFO有关的中断

波特率发生器
波特率发生器:为传输提供串行移位时钟。
波特率发生器以MCLK作为时钟源。
波特率时钟:由对时钟源16分频及波特率除数寄存器(UBRDIVn)指定的16位除数决定。
UBRDIVn值计算公式:
UBRDIVn=(取整)(MCLK/(波特率×16))-1
除数的范围:1~
例如:如果波特率为115200b/s,且系统主频(MCLK)为40MHz,则UBRDIVn的值为:
UBRDIVn =(取整)(40000000/(115200×16)+0.5)-1=22-1= 21
回送模式与红外通信模式
(1)回送模式:一个测试模式。
在这种模式下,发送出的数据会立即被接收。
这一特性用于校验运行处理器内部发送和接收通道的功能。
这种模式可以通过设置UART控制寄存器(UCONn)中的回送位来实现。
(2)红外通信模式:S3C44BOX的UART模块支持红外线(IR)发送和接收。
可以通过设置UART控制寄存器(UCONn)中的红外模式位来选择这一模式。
UART线控制寄存器
作用:规定传输帧的格式。
线控制寄存器0(ULCON0)地址0x01D00000,可读写,初始值为0x00。
线控制寄存器1(ULCON1)地址0x01D04000,可读写,初始值为0x00。

UART控制寄存器
作用:确定发送/接收的控制参数。

FIFO控制寄存器
作用:确定发送/接收FIFO的控制参数。
UFCON0地址为0x01D00008,可读写,初始值为0x00。
UFCON1地址为0x01D04008,可读写,初始值为0x00

Modem控制寄存器
作用:确定自动流控制和RTS设置。
UMCON0地址为0x01D0000C,可读写,初始值为0x00。
UMCON1地址为0x01D0400C,可读写,初始值为0x00。

发送/接收状态寄存器
作用:提供发送接收状态。
UTSTAT0地址为0x01D00010,可读,初始值为0x06。
UTSTAT1地址为0x01D04010,可读,初始值为0x06。

UART错误状态寄存器
作用:提供各种接收过程中的错误情况。
UERSTAT0地址为0x01D00014,可读,初始值为0x00。
UERSTAT1地址为0x01D04014,可读,初始值为0x00。

UART的FIFO状态寄存器
作用:提供FIFO发送、接受、计数器的状态。
UFSTAT0地址为0x01D00018,可读,初始值为0x00。
UFSTAT1地址为0x01D04018,可读,初始值为0x00。

其他寄存器地址
(1)Modem状态寄存器
UMSTAT0地址为0x01D0001C,可读,初始值为0x00。
UMSTAT1地址为0x01D0401C,可读,初始值为0x00。
(2)UART发送/接收保持(缓冲区)寄存器
UTXH0地址在小模式下为0x01D00020,在大模式下为0x01D00023,可写, 初始值可编程。
UTXH1地址在小模式下为0x01D04020,在大模式下为0x01D04023,可写, 初始值可编程。
(3)UART波特率除数寄存器
UBRDIV0地址为0x01D00028,可读写,初始值可编程。
UBRDIV1地址为0x01D04028,可读写,初始值可编程。
S3C44B0X的UART 的应用1
电路接口和I/O口设置
S3C44BOX的串行应用接口电路中的PC12,PC13,PE1, PE2是多功能I/O口,因此,在编写串口数据收发程序之前,首先需要对PC口和PE口的工作模式进行设置。
Rpconc = Ox0f000000|rPCONC;
rPUPC = 0x3000; //设置内部上拉
rPCONE = (rPCONE & Oxfc3)|Oxeb;
rPUPE = 0x6;
S3C44B0X的UART 的应用2
2.UART初始化
对UART口的可配置参数进行初始化,使其能够按照所要求的通讯方式进行通讯。
对UART口进行初始化的设置程序见教材P186。
3.字符发送程序Uart_SendByte()
见教材P187。
4.字符接收程序Uart_GetByte()
见教材P187。
USB系统组成
USB:通用串行总线,由Compaq、HP、Intel、Lucent、Microsoft、NEC和Philips 7家公司联合推出。
USB总线是一种连接外围设备的机外总线,最多可连接127个设备。
USB总线性能特点:
即插即用。
每个USB系统中有个主机,采用“级联”方式USB总线可连接多个外部设备。
适用于带宽范围在几千位/秒(Kb/s)~几百兆位l秒(Mb/s)的设备。
低成本的电缆和连接器。
USB具有错误检测和处理机制,可识别设备的错误。
较低的协议开销带来了高的总线性能,且适合于低成本外设的开发。
支持主机与设备之间的多数据流和多消息流传输,且支持同步和异步传输类型。
USB系统组成
3部分组成:USB主机、USB设备和USB互连。
USB主机:在任一USB系统中只有一个主机,到主计算机系统的USB接口被称作主控制器。
USB设备:分为Hub(集线器)和Function(功能)两大类。Hub提供到USB的附加连接点,功能为主机系统提供附加的性能,就是可发送和接收USB数据的、可实现某种功能的USB设备。
USB互连:USB互连指的是USB设备与主机的连接和通信方式,它包括总线拓扑结构、内层关系、数据流模型和USB调度表。
USB总线用来连接各USB设备和USB主机 。
USB的物理接口
4根导线:一对标准尺寸的双绞信号线和一对标准尺寸的电源线。
3种数据传输率:
高速信令位传输率为480Mbs;
全速信令位传输率为12Mbs;
低速信令位传输率为1.5Mb/s。
USB2.0支持在主控制器与Hub之间用高速传输全速和低速数据。
Hub与设备之间以全速或低速传输数据。
这种支持能力可以将全速设备和低速设备对高速设备可用带宽的影响减到最小。
USB的总线协议
USB是一种查询总线,由主控制器启动所有的数据传输。
USB上所挂连的外设通过由主机调度的协议、基于令牌的协议来共享USB带宽。
总线事务涉及3个包的传输 :
令牌包
数据包
握手包
主控制器和Hub之间的某些总线事务涉及4个包的传输,这些类型的事务用来管理主机与全/低速设备之间的数据传输。
主机与设备端点之间的USB数据传输模型被称作管道,管道有两种类型:流、消息。消息数据具有USB定义的结构,而流数据没有。
以太网接口概述
特点:灵活、相对简单、易于实现。
以太网主要有3种局域网技术:
(1)以太网/IEEE 802.3:采用同轴电缆作为网络介质,传输速率达到10 Mbps。
(2)100 Mbps以太网:又称快速以太网,采用双绞线作为网络介质,传输速率达到100 Mbps。
(3)1000 Mbps以太网:又称为千兆以太网,采用光缆或双绞线作为网络介质,传输速率达到1000 Mbps(1 Gbps)。
以太网工作原理
以太网是一种基带局域网技术。
以太网/IEEE 802.3使用专门的网络接口卡实现,使用收发器与网络媒体进行连接。
采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。它们通过查看包含在帧中的目标地址,确定是否进行接收或放弃。如果确定数据是发给自己的,工作站就会接收数据并传递给高层协议进行处理。
以太网采用载波多路访问和碰撞检测 (CSMA/CD)介质访问技术,任何工作站都可以在任何时间访问网络。在发送数据之前,工作站首先需要侦听网络是否空闲,如果网络上没有任何数据传送,工作站就会把所要发送的信息投放到网络当中;否则,工作站只能等待网络下一次出现空闲的时候再进行数据发送。
以太网的传输编码
曼彻斯特编码:对应于每一数据位的中间位置都有一个跳变,用跳变的相位表示数字“0”和“1”,正跳变表示数字“0”,负跳变表示数字“1”,它也称为相位跳变。
差分曼彻斯特编码:在每一个数据位的中间有一个跳变,但它只用来生成同步时钟信号,不用跳变的相位表示数字“0”和“1”,而是用每位开始有无跳变来表示数字“0”和“1”,若每位开始有跳变表示数字“0”,若每位开始无跳变表示数字“1”。

以太网帧格式
(1)同步位PR:收发双方的时钟同步,7字节AAH。
(2)分隔位SD:表示下面跟着的是正式数据, 1字节ABH。
(3)目的地址(DA):媒体访问控制地址(MAC),表明该帧传输给哪个网卡。前3个字节标识网络硬件制造商,后3个字节由制造商确保地址惟一。6个字节FF广播地址。
(4)源地址(SA):表明该帧数据是哪个网卡发送的。
(5)类型/长度(TYPELENGTH):表明该帧的数据是什么类型的数据。如:0800h为IP包,0806h为ARP包,814Ch是SNMP包,8137h为IPX/SPX包,小于0600h的值表示数据包的长度。
(6)数据段:不超过1500字节(以太网最大长度不能超过1514字节,14字节为目的、源地址和类型)。 (7)填充位PAD:以太网帧传输的数据包最小不能小于60字节,除去目的地址、源地址和类型字段共14字节,至少还必须传输46字节的数据,数据不足时,后面补0…。
(8)循环冗余校验位FCS:以太网自动生成。

以太网数据发送
在以太网帧中,同步位、分隔位、填充位和校验位字段由以太网控制器自动产生的。
数据通信时,只关心:目的地址、源地址、类型和数据4个字段的内容。
数据位的传输:由低位开始。
编码:传输的位流使用曼彻斯特编码。
以太网的冲突退避算法由硬件自动执行。
以太网卡可以接收3种地址的数据,
(1)广播地址。
(2)多播地址(在嵌入式的环境中一般不用)。
(3)自已的地址。
以太网帧分为两个部分:
(1)帧头:包括目的地址、源地址和类型字段。
(2)数据:即数据段。
以太网帧头--结构体定义
// 以太网帧头
typedef struct{
BYTE dest[MACLEN]; //目标MAC地址
BYTE srce[MACLEN]; //源MAC地址
WORD ptype; //协议类型和长度
}ETHERHDR;
// 以太网硬件接收帧的最大长度,包括校验和CRC在内
#define MAXFRAMEC 1518 //最大帧长度(包括CRC)
#define MINFRAMEC 64 //最小帧长度(包括CRC)
//高层驱动采用的帧长度,减去了校验和CRC的长度
#define MAXFRAME 1514 //最大帧长度(不包括CRC)
#define MINFRAME 60 //最小帧长度(不包括CRC)
以太网帧--结构体定义
//以太网帧;数据段的长度为帧长度减去帧头和校验和的长度
#define ETHERMTU(MAXFRAME-sizeof(ETHERHDR)) //数据长度
typedef struct{
ETHERHDR h; //帧头
BYTE data[ETHERMTU]; //数据
LWORD crc; //CRC
}ETHERFRAME;
以太网控制器RTL8019
RTL8019:高度集成的以太网控制器,即插即用,与NE2000兼容。
输入/输出地址:32个,地址偏移量为00h~lFh。
RTL8019内部寄存器分页,每个寄存器都是8位。
在不同的页面下,同一个端口对应不同的寄存器。
页面的选择通过CR寄存器的第6位和第7位来选择。
数据读写端口地址:10h~17h的8个地址,只用其中的一个地址即可。
复位端口地址:18h~1Fh的8个地址,只用其中的一个即可。
注意:只有18h、1Ah、1Ch、1Eh这几个复位端口是有效的,其他不要使用,因为有些兼容卡不支持19h、1Bh、1Dh等奇数地址的复位。
RTL8019的寄存器结构

RTL8019的复位
冷复位:引脚RSTDRV高电平,大于800ns,通常复位后100ms,再对RTL8019进行读写操作,以确保完全复位。
热复位:对复位端口(18h~1Fh的偶数地址)读或写入任何数。
中断状态寄存器ISR中包含有与复位有关的标志位,它的地址为07h,位于第0页,可直接读写。
中断状态寄存器ISR反映了网卡的状态,通过读取该寄存器可以了解究竟是什么引发了中断,个别位可以通过写入“1”来清零。该寄存器必须在上电后全部清零。
复位与中断状态寄存器ISR
ISR寄存器中的第7位RST与复位有关。
在以太网控制器执行了正确复位之后该位为1。
一般在复位之后检查该标志位,以确认是否复位成功。

RTL8019 命令寄存器CR
命令寄存器CR的地址偏移量是00h,长度为1个字节

与发送/接收相关的寄存器1
① PSTART:接收缓冲区的起始页地址(位于01h,在第0页可写,在第2页可读)。
② PSTOP:接收缓冲区的结束页地址(该页不用于接收,位于02h,在第0页可写,在第2页可读)。
③ BNRY:边界寄存器(用于读指针,位于03h,在第0页可读写)。该寄存器用来避免对环形接收缓冲区中数据的错误覆盖,通常用做指针,指向接收缓冲区中已经被读取的最后一个页。
④ CURR:当前页寄存器(作为写指针使用,位于07h,在第1页可读写)。这个寄存器的内容指向接收缓冲区中第一个可用于接收新数据的页面。
⑤ DCR:数据配置寄存器。将它设置为使用FIFO缓存,普通模式,8位数据传输模式。字节顺序为高位字节在前,低位字节在后。
⑥ TPSR:发送页的起始页地址。初始化为指向第一个发送缓冲区的页。
与发送/接收相关的寄存器2
⑦ RCR:接收配置寄存器,设置为使用接收缓冲区,仅接收与自己地址相匹配的数据包(以及广播地址数据包)和多点播送地址包;小于64字节的包和校验错的数据包将被 丢弃。
⑧ TCR:发送配置寄存器,启用CRC(循环冗余校验)自动生成和校验功能,工作在正常模式。
⑨ RSAR0,1:对存储器进行操作的起始地址寄存器,RSAR0存放低8位,RSARl存放高8位。
⑩ RBCR0,1:对存储器操作的字节计数寄存器,RBCR0存放低8位,RBCRl存放高8位。
TBCR0,1:发送字节计数器,这两个寄存器设置了要发送数据包中的字节个数。TBCR0存放低8位,TBCRl存放高8位。
RTL8019其他寄存器
(1)IMR:中断屏蔽寄存器,设置成0x00时,屏蔽所有的中断,设置成0xFF将允许 中断。
(2)MAR0~MAR8:多点播送地址,可以全写0xFF。
(3)PAGE2的寄存器是只读的,不用设置。PAGE3的寄存器不是NE2000兼容的,所以也不用设置。
RTL8019的RAM空间结构
RTL8019以太网控制器片内含有16KB的RAM,地址为0x4000~0x7FFF,是RTL8019工作用的存储器,可以通过远程DMA访问。
每256个字节称为1页,共有64页。
页的地址就是RAM字节地址的高8位,页地址的范围为0x40~0x7F。
16KB的RAM一部分用来存储接收的数据包,一部分用来存储待发送的数据包。也可以给用户作其他用途使用。
使用0x40~0x45(页地址)作为RTL8019的发送缓冲区,共6页,6×256=1536 B,刚好可以存储1个最大的以太网包。
使用0x46~0x5F (页地址)作为RTL8019的接收缓冲区,共26页。可以设置寄存器PSTART=0x46,PSTOP=0x5F。
当前页寄存器CURR和边界寄存器BNRY是以太网数据收发中用到的两个最主要的寄存器 。 CURR和BNRY主要用来控制缓冲区的存取过程,保证能顺次写入和读出。
当前页寄存器CURR的使用
CURR:以太网控制器写接收缓冲区的指针。
控制器正确复位后,应该将它初始化为PSTART+1=0x47。
以太网控制器写完接收缓冲区一页,就将这个页地址加l,即CURR=CURR+1,这是RTL8019自动加的; 当加到最后的空页(即PSTOP=0x60)时,将CURR置为接收缓冲区的第1页(即PSTART=0x46),以太网控制器自动完成。
当CURR=BNRY(边界寄存器)时,表示缓冲区全部被存满,数据没有被用户读走,这时以太网控制器将停止往接收缓冲区写数据,新收到的数据包将被丢弃不要,而不覆盖旧的数据。此时实际上出现了接收缓冲区溢出。
边界寄存器BNRY的使用
BNRY:指向接收缓冲区中已经被读取的最后一个页。
控制器正确复位后,刚开始还没有接收到任何数据包,所以BNRY被设置为指向第一个接收缓冲区的页(即 PSTART=0x46),BNRY由用户操作。
用户从以太网控制器读一页数据,要将BNRY加1,然后再写回到BNRY寄存器(即BNRY=BNRY+1)。
当BNRY加到最后的空页(即PSTOP=0x60)时,同样要将BNRY变成第一个接收页(PSTART=BNRY=0x46)。
网卡的物理地址
在完成对寄存器的初始化后,以太网控制器还不能正确地接收数据包,因为还没有对以太网控制器的物理地址 即48位的以太网控制器地址)进行设置,以太网控制器还不知道它应该接收什么地址的数据包。
要对网卡的物理地址进行设置,就必须知道网卡的物理地址是多少。
RAM地址中的0x0000~0x000B的12字节是网卡的物理地址。
网卡的物理地址本应该是6个字节,这12字节是单双地址重复存储的。
0x000B后面的地址存储的是生产厂商的代码和产品标识代码,也是单双地址重复存储的。
以太网模块的接口1
配置RTL8019:为了系统的精简,配置RTL8019为非即插即用模式。有着固定的中断,有着固定的端口地址。以太网模块与处理器的接口电路:

以太网模块的接口2
寄存器地址映射:采用nGCS5作为以太网模块的地址使能位,将以太网卡映射在了系统的Bank5上,地址从 0xa000000开始,由此,要在程序中定义RTL8019的寄存器地址。
编写RTL8019中的页面切换函数,热复位函数(硬件复位之后的一次热复位)和初始化函数(设置接收缓冲区的位置和以太网物理地址,初始化寄存器,设置中断的模式)。
通过RTL8019传输数据:数据的发送校验,总线数据包的碰撞检测与避免都由芯片自己完成的,只需要配置发送数据的物理层地址的源地址、目的地址、数据包类型以及发送的数据就可以进行数据发送。
在RTL8019的初始化程序中已经设置好了接收缓冲区的位置,并且配置好了中断的模式。当有一个正确的数据包到达的时候,RTL8019会产生一个中断信号,在ARM中断处理程序中,接收数据,数据的接收比较简单,即通过远端DMA把数据从RTL8019的RAM空间读回ARM中处理。
IIC接口概述
IIC总线: Inter-Integrated Circuit,双向,两线制,串行总线,由PHILIPS公司开发,用于连接微控制器及其外围设备。
起源: I2C 总线产生于80年代,最初为音频和视频设备开发。
应用场合:服务器管理,组件状态通信,例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可监控内存、硬盘、网络、系统温度等多个参数。
特点:简单性,有效性,多主控。
接口直接在组件之上,占用空间小,降低成本。
总线的长度可达25英尺,以10Kbps传输速率支持40个组件。
任何能够进行发送和接收的设备都可以成主控器 。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
I2C总线的构成及信号类型
构成:数据线SDA,时钟SCL。
最高传送速率 100kbps。
各种I2C组件均并联在这条总线上,每个电路和模块都有唯一的地址。
信息传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。
三种类型信号:
(1)开始信号:SCL=1时,SDA由高向低跳变。
(2)结束信号:SCL=0时,SDA由低向高跳变。
(3)应答信号:接收IC在接收到8bit数据后,向发送IC发出特定的低脉冲,表示已收到数据。
CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,接收到应答信号后,作出是否继续传递信号的判断。若未收到应答信号,判断为受控单元出现故障。
I2C总线基本操作
I2C规程运用主/从双向通讯。
发送器:发送数据到总线上。
接收器:从总线上接收数据。
主器件和从器件都可以工作于接收和发送状态。
总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。
SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。

I2C总线通用传输过程及格式
传输过程:主器件送出一个起始条件,起始条件后面的第一个字节是地址域,送出一个从地址。之后,传输的每个字节后面都有一个应答(ACK)位。
地址信息:1个字节,包括7位地址,1位传输方向指示位。第7位=0,写操作;第7位=1,读操作。
数据位发送顺序:先高后低。
SDA线上传输的每个字节长度都是8位,每次传输中,字节的数量没有限制。
应答信号:为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节。
ACK脉冲信号在SCL线上第9个时钟处发出。(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)。
当发送器要接收ACK脉冲时,应该释放SDA信号线,也就是将SDA置高。接收器在接收完前面8位数据后,将SDA拉低。发送器探测到SDA为低,就认为接收器成功接收了前面的8位数据。
S3C44B0X的IIC-BUS接口
S3C44B0X支持一个多主I2C-BUS串行接口。
主S3C44B0X能发送或接收串行数据到从设备,并遵守标准的IIC协议。
有如下操作模式:
主发送模式
主接收模式
从发送模式
从接收模式
涉及4个寄存器:
IIC-BUS控制寄存器IICCON
IIC-BUS控制/状态寄存器IICSTAT
IIC-BUS地址寄存器IICADD
IIC-BUS发送/接受数据移位寄存器IICDS
CAN总线概述
(1)CAN:控制器局域网。
(2)特点:
低成本,总线利用率高。
远距离的数据传输(长达1km)。
高速的数据传输速率(高达1Mb/s)。
可根据报文的ID决定接收或屏蔽该报文。
可靠的错误处理和检错机制。可自动重发。
报文不包含源地址或目标地址,仅用标志符来指示功能信息优先级。
(3)CAN总线的电气特性:
常用双绞线进行传输。
信号使用差分电压传送,两条信号线被称为CAN_H和CAN_L。
CAN_H和CAN_L静态时均是2.5V左右,此时状态表示为逻辑1,也可以叫做“隐性”;
用CAN_H比CAN_L高表示逻辑0,称为“显性”,此时,通常电压值为CAN_H=3.5V和CAN_L=1.5V。
当“显性”位和“隐性”位同时发送的时候,最后总线数值将为“显性”,这种特性,为CAN总线的仲裁奠定了基础。
CAN总线与同步串行接口SIO
S3C44B0X 的SIO能与各种类型的串行外设接口。
SIO模块能以一定的频率发送或接收8位串行数据。
时钟源:可以选择内部时钟或外部时钟。
SIO模块功能:
(1)8位数据缓冲(SIODAT);
(2)12位的预定标器(SBRDR);
(3)8位间隔计数器(ITVCNT);
(4)时钟源选择逻辑;
(5)串行数据I/O脚(SIORXD和 SIOTXD);
(6)外部时钟输入输出脚(SIOCK);
(7)DMA运行模式。
SIO正常操作模式
操作模式:发送与接收同时进行,一个发送数据脚,一个接收数据脚,当一个字节写入SIODAT数据寄存器,如果SIO运行位设置和发送模式允许,则SIO开始发送数据。
对SIO模块编程的步骤:
①配置I/O脚(SIOTXD, SIOCLK, SIORXD);
②设置SIOCON为适当的配置;
③设置串行I/O中断允许位;
④如果想发送数据,写数据到SIODAT;
⑤设置SIOCON[3]为1,开始数据移位操作;
⑥当数据移位操作完成时,SIO中断被请求和SIODAT接收到数据;
⑦返回第4步。
SIO DMA 发送
在自动运行模式(非握手模式)下,SIO等待直到发送的数据被外部目标设备读走,在每次8位数据发送后,SIO插入一个可编程的间隔周期。
DMA发送数据步骤:
①清DCNTZ为0,使SIO能请求DMA服务。除了SIOCON[1:0]必须为00外, 适当的配置SIO;
②适当的配置DMA;
③SIO被配置为DMA发送模式;
④SIO自动请求DMA服务;
⑤SIO发送数据;
⑥返回步骤4直到DMA计数为0;
⑦设置DCNTZ为1,停止SIO请求进一步的DMA服务。
SIO DMA 接收
DMA接收数据步骤:
①清DCNTZ为0,使SIO能请求DMA服务.除了SIOCON[1:0]必须为00外, 适当的配置SIO;
②适当的配置DMA;
③SIO被配置为DMA只接模式;
④设置SIOCON[3] (SIO 开始位)来开始接收操作;
⑤SIO在接收到8位数据后请求DMA服务;
⑥返回步骤5直到DMA计数为0;
⑦设置DCNTZ为1,停止SIO请求进一步的DMA服务。
SIO接口寄存器
1)SIO控制寄存器(SIOCON):地址0x01D14000,可读写,初始值为0x00。
2)SIO 数据寄存器 (SIODAT):8位,存放要发送数据或已接收的数据,地址0x01D14004,可读写, 初始值为0x00。
3)SIO 波特率预定标器寄存器 (SBRDR):确定SIO的波特率,12位,地址0x01D14008,可读写,初始值为0x00。SIO的 波特率 = MCLK / 2 /( SBRDR寄存器的值 + 1)
4)SIO 间隔计数寄存器(IVTCNT):8位,地址为0x01D1400C,可读写,初始值为0x00。自动运行模式下,每传送8位数据插入一个时间间隔:
时间间隔 = MCLK / 4/ ( IVTCNT +1)
5)SIO DMA请求控制寄存器(DCNTZ):当SIO工作在DMA模式时,对应的DCNTZ必须为0,当DMA完成时,对应的DCNTZ设置为1。DCNTZ地址为0x01D14010,可读写,初始值为 0x00。
IIS总线概述
IIS:Inter-IC Sound bus,又称I2S,是菲利浦公司提出的串行数字音频总线协议。目前很多音频芯片和MCU都提供了对IIS的支持。
IIS主要针对数字音频处理技术和设备,例如便携CD机等。IIS将音频数据与时钟信号分离,避免由时钟带来的抖动问题,因此系统中不再需要消除抖动的器件。
IIS总线组成: 3根线,时分复用数据通道线(Serial Data)、字段选择线(声道选择) (Word Select)和时钟线 (Continuous Serial Clock) 。

IIS总线接口的基本时序
WS信号指示左通道的数据将被传输。
SD信号线按高有效位MSB到底有效位LSB的顺序传送字长的音频数据。
MSB总在WS切换后的第一个时钟发送。如果数据长度不匹配,那么接收器和发送器将对其自动截取或填充。

S3C44B0X的IIS-BUS接口
在三星公司的ARM芯片中,为了实现全双工模式,使用了两条串行数据线,分别作为输入和输出。
IIS组成:四条线,串行数据输入(IISDI),串行数据输出IISDO),左/右通道选择(IISLRCK),串行位时钟
clock (IISCLK)。
主设备:产生IISLRCK和IISCLK信号的为主设备。
三种数据传输模式:
(1)正常传输模式:此模式基于FIFO寄存器。该模式下CPU将通过轮询方式访问FIFO寄存器,通过IISCON寄存器的第七位控制FIFO。
(2)DMA传输方式:是一种外部设备控制方式,发送和接收FIFO的存取由DMA控制器来实现,由FIFO准备好标志来自动请求DMA的服务。三星ARM中有4个DMA控制器,其中IIS与其他串行外设共用两个桥联DMA(BDMA)类型的DMA通道。
(3)发送和接收同时模式:该模式下,IIS数据线通过双通道BDMA同时接收和发送音频数据。
S3C44B0X的IIS-BUS寄存器
涉及5个寄存器:
IIS 控制寄存器IISCON
IIS 模式寄存器IISMOD
IIS 预定标器寄存器IISPSR
IIS FIFO控制寄存器IISFCON
IIS FIFO寄存器发送和接收FIFO的存取入口IISFIF
S3C44B0X IIS 接口能用来连接一个外部8/16位立体声声音CODEC(多媒体数字信号编解码器)。
UDA1341: Philips音频编码/解码芯片。
IIS和BDMA主要是对S3C44B0内部的一些寄存器做相应配置。
对1341的控制,主要通过GPA9为数据,GPB4为模式,GPB5为时钟,串行输入对1341进行设置。

S3C44BOX中断接口概述
S3C44BOX具有30个中断源,包括1个看门狗定时器,6个定时器,6个UART,8个外部,4个DMA,2个RTC,1个ADC,1个IIC 和1个SIO共30个中断。
S3C44BOX内置的中断控制器可以接收来自30个中断源的请求。
S3C44B0X支持新的中断处理模式称为矢量中断模式。中断控制器的角色,就是响应来自FIQ(快速中断请求)或IRQ(普通中断请求)的中断,并请求内核对中断进行处理。
多个中断请求发生时,由硬件优先级逻辑确定应该有哪个中断得到服务,同时硬件逻辑使中断向量表的跳转指令加载到(0X18或0X1C)位置,在该位置执行跳转指令使程序跳到相应的中断服务线程,因此相对于传统的ARM的软件方法能够大大减少中断进入延时。
之所以被称为向量中断模式,是因为它不需要用程序判断中断源,通过硬件实现直接跳转到相应ISR。而非向量中断必须在中断服务程序中判断中断来源,进而跳转到不同的处理程序。


