您的位置 首页 观点

s3c6410 s3c2440串口发送接纳数据的完成(轮询)及相关寄存器

16410与串口相关寄存器一需要设置的寄存器(其实进入uboot后,串口已经设置好了,直接发送数据就行了,)1)模式UCON(轮询,中断…

1 6410与串口相关寄存器

一 需求设置的寄存器(其实进入uboot后,串口现已设置好了,直接发送数据就行了,)
1)形式
UCON (轮询,中止,DMA等)
2)相关参数
ULCON0 界说了串口数据的帧格局,数据位长度,奇偶校验位,中止位(8-N-1)
BRDIV 界说了波特率的核算公式所得成果的整数部分
UDIVSLOT0 界说了波特率的核算公式所得成果的小数部分
3)高档选项(串口的发送接纳缓冲的巨细(fifo)默许是1B,可改成64B
二 发送接纳数据
相关的寄存器
UTXH0 UART channel 0 transmit buffer register
URXH0UART channel 0 receive buffer register(这两个寄存器和51的SBUF类似)

UTRSTAT0 UART channel 0 Tx/Rx status register
[2:0]中
[2] 假如发送buffer空且发送移位器空时置1,反之置0
[1] 假如发送buffer空则置1;
[0] 假如接纳buffer接纳到有用数据,则置1,反之置0;
发送时看2位,接纳时看0位;
2410下的发送接纳函数(6410 和 2440 的串口完成根本相同,改改地址就行,单个的寄存器值的核算不同)

void uart_putchar(unsigned char k)
{
while(!(UTRSTAT0&0x04)); //假如UTRSTAT 2位是0,则一向循环,直到为1(transmit buffer is empty,can transmit data)

UTXH0 = k;
}
unsigned char uart_getchar(void)
{
unsigned char c;
while(!(UTRSTAT0&1<<0)); // 假如UTRSTAT 0位是0(表明没有有用数据),则一向循环,
c = URXH0;
return c;
}
这样就能够发送一字节和接纳一字节了,能够在写自己的gets()puts()函数;
当然串口能作业是因为 uboot 现已做了许多作业(串口的初始化);现在能够读出呼应的寄存器值(都是正确的值,能够作业),
写到自己的uart_init()函数中;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/274536.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部