VC33只带了一个串口,已经用在了AD接口上。为了同PC进行通讯,用16c550外扩一个串口。
开始调试,CPLD的程序是好久以前写的,这次调试只是简单修改了一下有关串口译码部分,调试了三天都没办法正确读取16c550的寄存器。期间几次修改16c550的初始化部分和CPLD中关于16c550的译码时序,都没有效果。没办法,还是编了一段反复读写16c550寄存器的程序,然后老老实实的用示波器检查DPS读写16c550的各个时序,都没发现问题,这下理所应当的怀疑是16c550坏了,又花了21大洋买了一个换上,结果“涛声依旧”。这下就更没有目标了,只好再次耐心检查读写时序,当测到外扩Flash的片选时,发现居然和16c550的片选时序相同,这样每次读16c550寄存器内容时,Flash也被选中,信号在数据线上叠加,导致不能正确读出16c550寄存器内容。这下问题就好办了,Flash的片选译码也是由CPLD负责的,经过重新检查CPLD程序中的Flash译码部分,再对照电路图,发现Flash的片选引脚分配错误,改正后问题解决。
至此,16c550寄存器不能正确读取的问题终于解决。
文章评论(0条评论)
登录后参与讨论