现在的位置: 首页 > FPGA开发 > 正文

VHDL读写18B20数据错误原因查找

2017年09月08日 FPGA开发 ⁄ 共 643字 ⁄ 字号 VHDL读写18B20数据错误原因查找已关闭评论 ⁄ 阅读 1,894 次

最近项目中使用到了18B20温度传感器,平台使用的altera的FPGA,由于温度对系统的稳定运行很重要。要时刻检测,低于某个温度要开启加热,考虑到使用软件读要占用CPU时间,决定把读取18B20温度写到硬件中去。

18B20的时序还是比较简单的,网上有详细的资料介绍,在此只是记录一下调试过程:

写完时序下载到FPGA之后,读到的数据全是FFFF,开始以为时序写的不对,对照着18B20时序看了好久感觉没问题,最后没有办法使用示波器查看读写波形:

18B20-ERR

18B20-ERR

通过查看波形,复位信号等都正常,接着发送命令,发送CC命令时,通过查看图中红框处发现丢失了1bit数据,导致发送的命令都不对,导致在后边的读取部分18B20根本没有返回数据,读到的FFFF只是FPGA释放总线之后由上拉电阻拉到了高电平。

通过分析问题应该出在了如下部分:主机发出复位信号之后,18B20回反馈一个存在信号(拉低数据总线一段时间),由于我在时序中检测到18B20的存在信号之后立马开始传输命令,此时数据总线还是低电平,到底命令字节的第一位数据时序不完整,没有发送出去。

下面是修改后的读取波形,此时已能成功读取到温度数据。

18B20-ok

18B20-ok

×