TL16C554读取寄存器的问题
我用DSP5509通过TL16C554扩展串口。
因为5509IO口少,所以需要用CPLD扩展。
现在有个问题,我对MCR寄存器进行读写。
我先写一个0XAA,再读,发现值为0X2A。
这是错误的。因为MCR高三位永久为0.
请高手指教,谢谢!
请看一下如下端口初始化程序,以UARTA为例
/* Port a */
-
uartwrite(uarta,lcr,0x80); /* Enable divisor access */
uartwrite(uarta,dll,0x18); // set divisor, external crystal is 3.686 MHz
uartwrite(uarta,lcr,0x03); /* Set 8,N,1 data */
uartwrite(uarta,fcr,0xc7); /* Trigger Level 14 bytes, enable and reset RX & TX FIFOs */
uartwrite(uarta,ier,0x0f); /* Enable all ints */
uartwrite(uarta,mcr, 0x08); /* Enable OUT2 to enable external interrupt INT*//* Set data mode for a channel */
uartwrite(uarta,lcr,0x03); /* Set 8,N,1 data */
谢谢!还是不行哎。
补充:
发现读写:LCR,DLM,IER都正常。
但是读写FCR,DLL,MCR都不正常。
比如往FCR里写0X55,读出来是0X15;
比如往FCR里写0XAA,读出来是0X6A;
比如往DLL里写0X55,读出来是0X05;
比如往DLL里写0XAA,读出来是0X0A;
比如往MCR里写0X55,读出来是0X05;
比如往MCR里写0XAA,读出来是0X0A;
进一步发现,往DLL里写从0往上递增的数。
发现从0到15读的都对,但是过了15就恢复为0。