- 论坛徽章:
- 0
|
回复 #2 litao6169 的帖子
//TL16C554初始化
void Init_TLB(){
volatile unsigned char byRx;
int i;
TLB.RBR = (unsigned long )ioremap_nocache(TLB.nAddress, 4));
TLB.THR = (unsigned long )ioremap_nocache(TLB.nAddress, 4));
TLB.LSR = (unsigned long )ioremap_nocache(TLB.nAddress+0x28, 4));
TLB.MSR = (unsigned long )ioremap_nocache(TLB.nAddress+0x30, 4));
TLB.LCR = (unsigned long )ioremap_nocache(TLB.nAddress+0x18, 4));
TLB.FCR = (unsigned long )ioremap_nocache(TLB.nAddress+0x10, 4));
TLB.MCR = (unsigned long )ioremap_nocache(TLB.nAddress+0x20, 4));
TLB.DLL = (unsigned long )ioremap_nocache(TLB.nAddress, 4));
TLB.DLM = (unsigned long )ioremap_nocache(TLB.nAddress+0x08, 4));
TLB.IER = (unsigned long )ioremap_nocache(TLB.nAddress+0x08, 4));
TLB.SCR = (unsigned long )ioremap_nocache(TLB.nAddress+0x38, 4));
TLB.IIR = (unsigned long )ioremap_nocache(TLB.nAddress+0x10, 4));
TLB.sRecvHead = 0;
TLB.sRecvTail = 0;
TLB.sSendHead = 0;
TLB.sSendTail = 0;
// set FCR.FIFO允许,RXD复位,TXD复位,DMAmode=1,触发为14
TLB.FCR = 0xcf;
TLB.FCR) = 0xc9;
TLB.MCR)= 0x08;//使能外部串口通道
TLB.LCR = 0x83;//设置8bit
//特殊寄存器已打开,设置BPS
TLB.DLL=0x24;
TLB.DLM=0x00;
TLB.LCR =0x03;
TLB.IER=0x03;//接收保持和中断允许
byRx = TLB.RBR;//空读一次
i=0;
while(1){
//检查接收状态
byRx = TLB.LSR;
if(byRx&0x01){
byRx = TLB.RBR;
}
else
break;
//防止死循环
i++;
if(i > 4096)//每个UART最多只能缓存16个字节
break;
}
} |
|