关键词不能为空

当前您在: 主页 > 英语 >

ARM9(S3C2440)之三串口UART

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-27 21:24
tags:

-

2021年2月27日发(作者:庶出)



ARM9(S3C2440)


的串口


UART


——理论知识


< br>转载自:骨


Zi


里德骄傲



概述



S3C2440A

< p>
的通用异步收发器(


UART


)配有


3


个独立异步串行


I/O



SIO


)端口,


每个都可以是基于中 断或基于


DMA


模式的操作。换句话说,


UART


可以通过产生


中断或


DMA


请求来进行


CPU



UART


之间的数据传输。



UART


通过使用系统时钟可以支持最高


115.2Kbps


的比特率。


如果是外部器件提



UEXTCLK



UART


,则


UART


可以运行在更高的速度。每个

UART


通道包含两个



64


字节的


FIFO


给发送和接收。



S3C2440A



UART


包括了可编程波特率,红 外(


IR


)发送


/

接收,插入


1


个或


2


个停止位,


5


位、


6


位、


7


位或


8


位的数据宽度以及奇偶校验。



每个


UART


包含一个波特率发生器 、


发送器、


接收器和一个控制单元,


如 图


11-1


所示。波特率发生器可以由


PCLK



FCLK/n



UEXTCLK


(外部输入时钟)时钟驱


动。 发送器和接收器包含了


64


字节


FIFO


和数据移位器。



将数据写入到


FIFO


接着在发送前 复制到发送移位器中。


随后将在发送数据引脚



TxDn


)移出数据。与此同时从接收数据引脚(


Rx Dn


)移入收到的数据,接着从


移位器复制到

< br>FIFO




UART


操作



下述章节描述了


UART


的操作,包 括了数据发送,数据接收,中断发生,波特率


发生,环回(


Lo opback


)模式,红外模式和自动流控制。



数据发送



可编程发送数据帧。由


1


个起始位、


5



8


位数据位、


1


个可选奇偶校验位以



1



2


个停止位组成,是由行控制寄存 器(


ULCONn


)指定。发送器也可以产

生单帧发送期间强制串行输出为逻辑


0


状态的断点状态。 此模块在完成发送当


前发送字后发送断点信号。在发出断点信号后,其不断发送数据到< /p>


Tx


FIFO


(非


FIFO


模式情况下


Tx


保持寄存器)中。

< br>


数据接收



与发送类似,


接收数据帧也是可编程的。



1


个起始位、


5



8


位数据位、


1



可选奇偶校验位以及


1



2


个停止位组成,


是由行控制寄存器



ULCONn


指定。


接收器能够检测出溢出(


overrun


)错误、奇偶校验错误、帧错误和断点状态,


每 个都可以设置一个错误标志。





溢出错误表明新数据在读出旧数据前覆盖了旧数据。





奇偶校验错误表明接收器检测出一个非预期奇偶校验字段。





帧错误表明接收到的数据没有有效的结束位。





断点状态表明


RxDn


的输入保持为逻辑


0


状态的时间长于单帧传输时间。



当其在


3


字时间期间


(此间隔在字宽位的设置随后)


并且在


FIFO


模式中


Rx


FIFO


为非空时不接收任何数据时



发生接收超时状态。



波特率发生



每个


UART


的波特率发生器为发送 器和接受器提供串行时钟。


波特率发生器的源


时钟可以选择


S3C2440A



< br>内部系统时钟或


UEXTCLK



换句话说,


分频由设置


UCONn


的时钟选项选择。


波特


率时钟是通过


1 6


和由


UART


波特率分频寄存器



UBRDIVn


< br>指定的


16


位分频系数来分频源时钟

< br>(


PCLK



FCLK/n < /p>



UEXTCLK


)产生的。

< p>


UBRDIVn


由下列表达式决定:



UBRDIVn = (int)( UART


时钟


/ (


波特率



× 16) )


- 1



UART


时钟:


PCLK



FCLK/ n



UEXTCLK




当然,


UBRDIVn


应该是从


1


至(

216-1



,只有在使用小于


P CLK



UEXTCLK



设置为


0


(旁路模式)




例如,如果波特率为


115200 bps


并且


UART


时钟为


40 MHz


,则


UBRDIVn


为:



UBRDIVn = (int)(40000000 / (115200 x 16) ) - 1


= (int)(21.7) - 1 [


取最接近的整数


]


= 22 - 1 = 21


UART


行控制寄存器:


< p>
该寄存器的位


6


决定是否使用红外模式,位


5


、位


4


和位


3


决定校验方式,位


2


决定停止位长度,位


1


和位


0


决定每帧的数据位数。具体如下:



ULCONn[7]


保留;



ULCONn[6]


红外线模式,

< br>0


:正常模式;


1


:红外线模式 ;



ULCONn[5



3]


校验模式,


0xx


:无校验;

< br>100


:奇校验;


101


:偶校 验;



ULCONn[2]


停止位,


0


:一个停止位;


1


:二个停止位;



ULCONn[1



0]


数据位,


00



5


位;


01



6


位;


10



7


位;


11



8


位。



UART


控制寄存器


UCONn


该寄存器决定


UART


的各种模式。



UCONn[10] 1



ULK


做波特率发生器;


0


PLK


做波特率发生器。



UCONn[9] 1



Tx


中断电平触发;


0


< br>Tx


中断脉冲触发。



CONn[8] 1



Rx< /p>


中断电平触发;


0


Rx


中断脉冲触发。



UCONn[7] 1


:接收超时中断允许;


0


:接收超时中断禁止。



UCONn[6} 1


:产生接收错误中断;


0


:不产生接收错误中断。



UCONn[5] l


:发送直接传给接收方式


(loopback)



0

< br>:正常模式。



UCONn[4] 1


:发送间断信号;


0


:正常模式发送。



UCONn[3:2]


发送模式选择:



00


:禁止发送;



01


:中断或查询模式;



10



DMA0


请求

< br>(UART0 )



DMA3


请求


(UART2)




11



D MAl


请求


(UART1)




UCONn[1



0]


接收模式选择。



00


:禁止接收;



01


:中断或查询模式;



10



DMA0


请求


UART0



DMA2


请求


UART2




11



D MAl


请求


UART1




UART FIFO


控制寄存器


UFCONn


UFCONn[7:6]


00



Tx FIFO


寄存器中有


0


字节就触发中断;



01



Tx FIFO


寄存器中有


4


字节就触发中断;

< p>


10



Tx FIFO


寄存器中有


8


字节就触发中断 ;



11



Tx FIFO


寄存器中有


12


字节就触发中断。



UFCONn[5:4]


00



Rx FIFO


寄存器中有


4


字节就触发中断;



01



Rx FIFO


寄存器中有


8


字节就触发中断;

< p>


10



Rx FIFO


寄存器中有


12


字节就触发中 断;



11



Rx FIFO


寄存器中有


16


字节就触发中断。



UFCONn[3]


保留。



UFCONn[2] 1



FIFO


复位清零


Tx FIFO



0



FIFO


复位不清零


TxFIFO




UFCONn[1] 1: FIFO


复位清零


Rx FIFO


;< /p>


0



F1FO


复 位不清零


RxFIFO




UFCONn[0] 1


:允许


FI FO


功能;


0


:禁止

< br>FIFO


功能。



UART MODEM


控制寄存器


UMCONn


UMCONn[7



5]


保留,必须全为


0




UMCONn[4] 1


:允许使用

AFC


模式;


0


:禁止使用


AFC


模式。



UMCONn[3]


保留,必须全为

< br>0




UMCONn[0] 1


:激活


rRTS


< br>0


:不激活


rRTS




发送寄存器


UTXH


和接收寄存器


URXH


这两个寄存器存放发送和接收的数据 ,当然只有


1


字节


(8


位数据


)


。需要注意的


是,在 发生溢出错误时,接收的数据必须被读出来,否则会引发下次溢出错误。



发送和接收状态寄存器


UTRSTATn

UTRSTATn


发送和接收状态寄存器包括


UTRSTAT0, UTRSTAT1 and UTRSTAT2


UTRSTATn


寄存器各位定义:



UTRSTATn [2]


1=


发送器空



UTRSTATn [1]


发送缓冲器空标志



0 =


不空;



1 =


空。



UTRSTATn [0]


接收缓冲器有接收数据标志



0 =


空;



1 =


接收缓冲器有数据。



原文地址:



ARM9(S3C2 440)


的串口


UART


——程序实例 讲解


作者:



Zi

里德


骄傲



串口通信程序编写步骤



UART


通信程序可以采用查询、中断和


DMA


模式 。我们通过使用较多的中断方式


来介


UART

< br>通信程序的编写。简单做法是,


UART


通信程序的编写 参照例子程序。



选通道,通过函数


U art_Select()


;选


UART0~UART2





选波特率和 波特率发生器时钟,


选波特率通过函数


Uart_Pclk_E n(int


ch,


int


bau d)



Uart_Pclk_En(int


ch,


int


baud)


来进行。


时钟选


UCLK


rUCON0|=0x400



时钟选


PCLK



rUCON0&= 0x3ff




通信协议(


rULCON0


)设定,如果正常通信,一位停 止位,


8


位数据位,无奇偶


效验:


rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);


通信控制字



rUCON0

< p>


设定,


如时钟选


ULK


做波特率发生器;


Tx


中断脉冲触发,


Rx


中断脉冲触发;接收超时中断允许;产生接收错误中断;正 常模式发送:




rU CON0|=(TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6 )|(0<<5)|


(0<<4)|(1<<2)|(1)


;< /p>



I/O


口初始化,因 为


UART


通信使用


H


口的第二功能,所以


H


口要上拉





rGPHUP|=0x1ff



H








nRTS1,nCTS1



< br>使




rGPHCON&=0x 3c0000



rGPHCON|=0x2faaa

< p>



设中断服务函数入口地址,把中断服务函数入 口地址赋函数指针


PISR_UARTn,


注意,

< p>
接收中断服务函数入口地址和发送中断服务函数入口地址是一个,


在中断< /p>


服务函数中根据



UTRSTATn [1]



UTRSTATn [0]


状态决定是发送中断还是接收中断。



打开总中断屏蔽和子中断屏蔽等待中断:



rINTMSK=~(BIT_UART0);


rINTSUBMSK=~(BIT_SUB_TXD0);



进入中断后,


先屏蔽发送和接收中断,


防止新来中断干扰我们的正常发




















< br>挂



和中









ClearPending(B IT_UART0)



rSUBSRCPND=(BIT_SU B_TXD0




< br>)



rSUBSRCPND=(BIT_SUB_RXD 0|BIT_SUB_ERR0)


(接收)


;



取消中断屏蔽,等下一次中断。



下面 是利用查询方式的串口通信程序(


FL2440


开发板)



#include


该程序是


PC


机通过串口工具向开发板发送


1234

< p>
这四个


数字来控制四个


LED

的亮灭



int TSmain()


{


char buf,i;



rULCON0 &=0XFFFFFF00;


rULCON0 |=0X03; //1


位起始位,

< p>
8


位数据位



rUCON0 =0x05;//0X0805; //


串口时钟


PCLK,


查询方式



东:


PCLK



50M


rUBRDIV0 =325;//0X1A; //


波特率


115200****325


时设置为< /p>


9600


rGPBCON = 0x1dd7fc;//GPB5,6,8,10


设置为输出



rGPBDAT|=0x560;//4


< br>LED


全灭



while(1)


{


if(rUTRSTAT0 & 0X01) //


接收是否完毕


=1


结束



{



buf=rURXH0; //


读取数据



while(!(rUTRSTAT0 & 0X04));//


是否允许发送


=1


允许



rUTXH0=buf;


if(buf=='1')//


判断接收到的是哪一个数字



i=1;


else if(buf=='2')


i=2;


else if(buf=='3')


i=3;


else if(buf=='4')


i=4;

-


-


-


-


-


-


-


-



本文更新与2021-02-27 21:24,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/676089.html

ARM9(S3C2440)之三串口UART的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文