s3c6410 s3c2440串口发送接收数据的实现(轮询)及相关寄存器
2014-04-16 18:23
387 查看
1 6410与串口相关寄存器
一 需要设置的寄存器(其实进入uboot后,串口已经设置好了,直接发送数据就行了,)
1)模式
UCON (轮询,中断,DMA等)
2)相关参数
ULCON0 定义了串口数据的帧格式,数据位长度,奇偶校验位,停止位(8-N-1)
BRDIV 定义了波特率的计算公式所得结果的整数部分
UDIVSLOT0 定义了波特率的计算公式所得结果的小数部分
3)高级选项(串口的发送接收缓冲的大小(fifo)默认是1B,可改成64B
二 发送接收数据
相关的寄存器
UTXH0 UART channel 0 transmit buffer register
URXH0 UART 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()函数中;
一 需要设置的寄存器(其实进入uboot后,串口已经设置好了,直接发送数据就行了,)
1)模式
UCON (轮询,中断,DMA等)
2)相关参数
ULCON0 定义了串口数据的帧格式,数据位长度,奇偶校验位,停止位(8-N-1)
BRDIV 定义了波特率的计算公式所得结果的整数部分
UDIVSLOT0 定义了波特率的计算公式所得结果的小数部分
3)高级选项(串口的发送接收缓冲的大小(fifo)默认是1B,可改成64B
二 发送接收数据
相关的寄存器
UTXH0 UART channel 0 transmit buffer register
URXH0 UART 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()函数中;
相关文章推荐
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制
- WPF内实现与串口发送数据和接收数据
- 51单片机中用中断方式实现串口数据发送与接收
- MFC单文档之串口通讯实现16进制数据的发送和接收
- 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制
- C# Scoket异步通讯实现(发送数据、接收数据)
- win7串口可以发送数据无法接收数据
- 使用iocomp中iplot控件实现接收串口数据并显示曲线
- C#通讯编程入门--串口数据接收发送实例
- 【Y忍冬草】Qt之客户端实现数据的接收和发送
- C# UDP、串口的数据接收与发送
- C# Scoket异步通讯实现(发送数据、接收数据)
- 安卓与串口服务器互联发送数据报文与接收数据报DatagramSocket.receive(参数体)接收不到数据报文
- 闪烁led来标志串口的接收与发送数据
- C# usb Hid 访问上位机USB通讯实例 实现设备在线或者离线和发送接收数据通讯功能
- 中断方式实现发送数据串口驱动
- 浅析nodejs实现Websocket的数据接收与发送
- MQTT Java客户端Eclipse paho实现数据的发送和接收
- C#实现串口数据循环发送
- mini2440 UART实现串口接收后转换为整型数据