TM7707应用调试笔记

       TM7707 一二通道数据不一致,数据读取不正确、数据乱跳、初始化不正确的问题,

      先说解决办法发,总的来说就是SPI通讯时序问题,在每次写寄存器时:

          1. 在SPI_CS线拉低后要延时十个到几百个时钟不等(自己尝试,和通讯频率与波形陡峭度相关,至少我的是这样的)。

          2. 在连续写寄存器时,每个寄存器间要间隔十个到几百个时钟不等(同上)。

          3. 在连续读寄存器时读完寄存器要延时十个到几百个时钟不等。这里还要注意的是 这个延时不能短了,也不能长了。要自己试一试。

         4. IO口模拟SPI时 读、写的时钟延时差异不要太大。

             以上四点在 读写函数前后加延时就行(mcu硬件SPI,IO口模拟的对照着来)。

          

 

 

          5. 初始化时多与 TM7707 同步几次时钟。

                             

 

 

                  注意:上图这里的这句话,只说了DIN一直发高电平32个脉冲后,芯片会复位。但是没说明,这是TM7707 和MCU同步时钟的操作。在对TM7707的寄存器操作前,

          至少要同步一次时钟。这个很重要。关键就是这里,妈的,手册里没讲,让我白肝了两个深夜调板子。同步 如下:

                     

 

 

                           

 

 

    下面 说说我调试TM7707的心路历程。摸索中前进。

           最近在给朋友做一个用于微反应池试验的温控模块,用朋友的话说就是:“这是有机化学平衡反应,温度是影响反应平衡点的重要因素,你给我做个高精度的温度控模块,控制精度越高越好”。像温度这种相对的物理量,是无时无刻的在物体间传动的。也就是说温度是动态物理量,不好直接测量的。对于我来说,能控制在±0.5摄氏度范围内就已经很难得了;

扯远了,言归正传,温度传感器我选用了PT1000A,ADC器件选的就是这颗TM7707,MCU选用的APM32F103C8T6(支持国产)。MCU和TM7707采用的硬件SPI通讯读取数据。温度显示采用的中景园的0.96OLED屏128×64.PT1000采用的是电阻桥的连接方式,电阻桥电阻采用的是千分之一的,50PPM的(成本有限,RJ711太高精度(价钱太贵)),发热单元用的半导体制冷片(能发热能制冷)。

     画板,打样,焊接都不是事,在驱动TM7707读取数据这里难住了,数据直接乱跳啊!不忍直视。反复检查原理图,测电压,测纹波,找干扰。还别说真找到一处:

  TM7707 的spi接口引脚电流输出能力比较强,特别是MISO,当TM7707 5V 供电 和3.3V的MCU连接需要串连电阻(10R~200R为宜)。记住这里后面就有这个电阻引起的问题。

好吧,改板子,再打样。手上的先割线,连一个电阻,继续写程序。

在网上找了很多参考,很多调通的大佬,都说TM7707的寄存器手册有问题,要参照TM7705的寄存器手册来(后面证明没有错,只是没看懂,没能理解,看来读手册的反复看)。

参照程序找了一大堆,都不行。终于找到一个能用的:

   这位玉麒麟大哥的 

      TM7707AD转换读取两个通道转换值时异常。-OpenEdv-开源电子网

     关于TM7707的研究————被坑了。-OpenEdv-开源电子网

     他参照TM7705 寄存器搞定的,我也相信TM7707的手册有问题了。至少程序能用了,先用着。项目顺利的搞完交给朋友,用的好好的。

我以为我和TM7707的故事就这么完了。可是没有。朋友说好用,再来一台。对于我来说好办,上次打样的板子还在,程序现成的,物料也有剩余,再焊一块板子的事。

故事就在这里发生,同样的板子,同样的程序这次就出现TM7707 一二通道数据不一致,数据读取不正确、数据乱跳、初始化不真确的问题。

刚开始,我以为是焊接的TM7707芯片有问题,换一颗同样的问题,再换,没解决。我在想前后两次可定有一样的地方。也是跑到朋友那里,把原来那块扣下来对比。

找到了问题 就是在SPI接口上串连的这个电阻不一样,原来的是51R,这次的是200R。果断跟换个51R的,基本正常了,偶尔重启也会不正常,原来那块也会有,只是朋友没说。

再换20R,嘿嘿这次正常了,重启也正常了。为什么这颗电阻会影响这么大呢?

     上示波器看看,发现了问题,spi时序问题,波形部陡峭。

     因为我第二次画板子给spi的四条线和OKL、NRST都串连了200R电阻.导致SPI_CS、SPI_CLK、SPI_MOSI线在TM7707一侧波形变得不陡峭了,电阻变小一点能改善。

或者降低SPI的时钟频率能改善(我用的是硬件SPI,增大分频系数,IO口模拟的SPI加大延时)。既然是这个问题我记在想,之前我参照TM7707的手册写的程序是不是也没问题。

就是时序没搞好!果断再试试。

      这次我发现,我自己写的代码里,没有时钟同步这一操作。想想也是,如果不时钟同步TM7707也不知道MCU的一个时钟是多长时间。

关键是手册上,没写,没有明确告诉要时钟同步。没有这一个骚操作,后面寄存器读写那就是直接团灭啊! 其次 我发现在连续写寄存器之间,如果间隔太短,TM7707好像反应不过来。

在CS拉低后要延时一下。然后在读、写完一个寄存器后也要延时一下。  

仅此笔记,以备不忘。

 

 

 

 

    

 

原文地址:http://www.cnblogs.com/Koomee/p/16831177.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性