文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>s3c2440-UART

s3c2440-UART

时间:2009-08-05  来源:tancotq

s3c2440 通用异步接收器和发送器(UART)提供了三个独立的异步串行I/O(SIO)端口,每个端口都可以在中断模式或DMA模式下操作. 每个UART 通道的接收器和发送器包含了2 个64 位的FIFO。   每个UART 包含一个波特率发送器,发送器,计数器和一个控制单元.波特率发生器可由PCLK,FCLK/n 或UEXTCLK(外部输入时钟)来锁定。   uart 的使用: 使用之前需要 1.设置波特率, 传输格式如有几个数据位,是否使用流量控制, 有多少个停止位,是否使用校验位, 是奇还是偶校验. 2.设置GPH2, GPH3 为TXD0, RXD0. 选择工作模式, 3.通过对寄存器写,读可实现发送与接收.   产生波特率: 通过设置UBRDIVn寄存器. UBRDIVn = (int) (UART clock / (buad rate x 16)) –1   设置传输格式: 通过设置UART 线性控制寄存器(ULCONn)   设置uart时钟源,uart 中断方式: 设置UART 控制寄存器(UCONn)   设置FIFO: 通过设置UFCONn, 设置是否用FIFO, FIFO触发阈值.   UTRSTATn : 通过其可查询数据是否发送/接收完.   UERSTATn : 表示各种错误是否发生.   UTXHn : CPU 将数据写入其, UART将其中的数据保存到缓冲区, 并自动发送.   URXHn : CPU 接收到数据时, CPU通过读取其,可得到数据.     初始化示例: void uart0_init(void)
{
    GPHCON  |= 0xa0;    // GPH2,GPH3用作TXD0,RXD0
    GPHUP   = 0x0c;     // GPH2,GPH3内部上拉
    ULCON0  = 0x03;     // 8N1(8个数据位,无较验,1个停止位)
    UCON0   = 0x05;     // 查询方式,UART时钟源为PCLK
    UFCON0  = 0x00;     // 不使用FIFO
    UMCON0  = 0x00;     // 不使用流控
    UBRDIV0 = UART_BRD; // 波特率为115200
}
发送: void putc(unsigned char c)
{
    /* 等待,直到发送缓冲区中的数据已经全部发送出去 */
    while (!(UTRSTAT0 & TXD0READY));
   
    /* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */
    UTXH0 = c;
}
    接收: unsigned char getc(void)
{
    /* 等待,直到接收缓冲区中的有数据 */
    while (!(UTRSTAT0 & RXD0READY));
   
    /* 直接读取URXH0寄存器,即可获得接收到的数据 */
    return URXH0;
}
相关阅读 更多 +
排行榜 更多 +
像素世界乐园

像素世界乐园

策略塔防 下载
荒岛狩猎人神枪手

荒岛狩猎人神枪手

飞行射击 下载
斗弓箭手

斗弓箭手

飞行射击 下载