用TL16C752B实现DSP和PC机的串行通信
(5)传输数据格式设定,包括8位数据位、2位停止位、DMA传输模式1、偶校验、不使用强制校验模式、暂停控制位无效等;
(6)设置FIFO控制以及中断控制寄存器。
此外,在完成设置前,还应注意以下几点:
(1) 设定DLL和DLH前,LCR[7]应为1。
(2) 设定MCR前,EFR[4]应为1,LCR应为00h。地址相重叠的寄存器不能同时使能。
(3) 读写RHR和THR时,由于DSP的读写速度很快,故最好不要连续读写,而是在每读、写一次后延时一段时间,然后再进行下一次读写。
(4) 这里,DMA只是一个名称,而并非是 “直接存储器访问”。
TL16C752B的地址分配在I/O空间的0020h~0027h,读写通过PORTR和PORTW指令完成。TL16C752B初始化程序如下:
ini_uart_start:
;设置 baud rate=38400 ; divi-sor=0006h
stm #temp1_reg,ar1
nop
st #80h;*ar1 ;除数锁存使能 LCR=bfh
portw *ar1,#k_LCR_addr
st #k_DLL_value,*ar1
portw *ar1,#k_DLL_addr
st #k_DLH_value,*ar1
portw *ar1,#k_DLH_addr
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
st #k_LCR_value?*ar1 ;LCR=bfh
portw *ar1,#k_LCR_addr
st #k1 EFR value?*ar1 ;增强功能使能
portw *ar1,#k_EFR_addr
st #0,*ar1 ;设定LCR= 0
portw *ar1?#k LCR addr
st #k_FCR_value,*ar1 ;设定FIFO控制寄存器
portw *ar1,#k_FCR_addr
st #k_MCR_value,*ar1 ;设定MCR/TCR/TLR寄存器
portw *ar1,#k_MCR_addr
st #k_TCR_value,*ar1
portw *ar1,#k_TCR_addr
st #k_TLR_value,*ar1
portw *ar1,#k_TLR_addr
st #k1_MCR_value,*ar1
portw *ar1,#k_MCR_addr
st #k_LCR_value,*ar1 ;为访问Xon/Xoff/EFR,LC
《用TL16C752B实现DSP和PC机的串行通信(第4页)》