实现230400/460800bps波特率高速数据传送
M6117系列板卡上使用的多路I/O芯片是ALi M5113。它支持快速通用异步收发,最高波特率可达460800 bps。下面是实现这种功能的DOS C语言范例代码:
/* DM&P/ICOP M6117D 系列板卡上ALi M5113范例代码。*/
#
include <conio.h>
void M5113_Write(unsigned char cIdx, unsigned char cData)
{
outportb(0x3f1, 0x51);
outportb(0x3f1, 0x29);
inportb(0x3f1);
outportb(0x3f1, cIdx);
outportb(0x3f1, cData);
}
unsigned char M5113_Read(unsigned char cIdx)
{
outportb(0x3f1, 0x51);
outportb(0x3f1, 0x29);
inportb(0x3f1);
outportb(0x3f1, cIdx);
return inportb(0x3f1);
}
void main()
{
unsigned char cTemp;
/* 上面提到的ALi M5113寄存器数据的相关资料在
http://www.dmp.com.tw/tech/dmp-hw/misc/m5113.pdf CR8和CR9的16,17页上。*/
/* Enable UART1 hi-speed baud rate */
cTemp = M5113_Read(0x88);
/* 设置通用异步收发器1 达到最大波特率。*/
cTemp |= 0x20; /* set CR8 bit5 to 1 */ /* 设置CR8 bit5到1 */
M5113_Write(0x88, cTemp);
/* 设置通用异步收发器2 达到最大波特率 */
cTemp = M5113_Read(0x99);
cTemp |= 0x20; /* set CR9 bit5 to 1 */ /* 设置 CR9 bit5到1 */
M5113_Write(0x99, cTemp);
}
/* 参考表格 5-5, 用户在初始化UART的过程中:
使用32770 作为除法因子达到230400 的波特率。
使用30769 作为除法因子达到460800 的波特率。
*/






