如果C32要和PC机通讯,可使用TL16C550完成串行协议的转换。TLl6C550的输出接口要和一个电平转换芯片连接,用于和PC机的串行通讯接口互联。完整的接口示意图如图5所示。
其中的MAX232可以使用MAXIM公司的MAX3238来实现。
接口电路分为两大部分:DSP C32和串行通讯芯片TLl6C550之间的接口;串行通讯芯片TLl6C550和PC机之间的接口。完整的电路原理图如图6所示。
接口逻辑可以使用集成的CPLD实现,本系统中使用的是Altera公司的EPM7128SLC184-10。它将芯片TLl6C550作为DSP C32的一个外设端口送行寻址。
图6
相应的接口逻辑使用AHDL语言描述,具体如下:
TL16C550A一共使用8个地址对内部寄存器进行访问和控制。相对DSP C32系统而言,如果使用了上面的译码逻辑电路,则占用的8个地址为:0X818000~0X818007。
TLl6C550A串行接口寄存器的寻址表如表1所示。
表1 TL16C550A的寄存器寻址表
| DLAB* | A2 A1 A0 | 寄 存 器 名 | 属 性 | 地址值 |
| 0 | 0 0 0 | 接收缓冲寄存器RBR | 只读 | 0X818000 |
| 0 | 0 0 0 | 发送缓冲寄存器TBR | 只写 | 0X818000 |
| 0 | 0 0 1 | 中断使能寄存器IER | 读/写 | 0X818001 |
| X | 0 1 0 | 中断标志寄存器IIR | 只写 | 0X818002 |
| X | 0 1 0 | FIFO控制寄存器FCR | 只写 | 0X818002 |
| X | 0 1 1 | 线路控制寄存器LCR | 读/写 | 0X818003 |
| X | 1 0 0 | MODEM控制寄存器MCR | 读/写 | 0X818004 |
| X | 1 0 1 | 线路状态寄存器LSR | 读/写 | 0X818005 |
| X | 1 1 0 | MODEM状态寄存器MSR | 读/写 | 0X818006 |
| X | 1 1 1 | 便签寄存器SCR | 读/写 | 0X818007 |
| 1 | 0 0 0 | 除数低字节锁存器DLL | 读/写 | 0X818000 |

