项目场景:
我也是第一次使用这个芯片,厂家也没有提供技术支持。从网上查找资料以及旁边大神的指点。花了一个多月终于是读出电压,并且加校准。
问题描述
刚开始接触到这个芯片的时候。你先把这个芯片的数据手册大概过一遍。我旁边这个大神也是这样教我的。养成习惯。你就会知道这个芯片大概是怎么工作的。 我看第一遍的时候知道了。哦.0.这个芯片是通过spi方式和mcu通讯的。然后就跟着写spi的读写程序。跟着时序图,屁颠屁颠的把时序写好。
读不到数据原因分析:
写完读的函数我读一下默认地址。哎。怎么是0。在看一遍手册。噢噢噢噢。复位脚拉低了。
解决问题。读取默认地址成功。
成功读取到数据 7122A0。 这不是有手就行。
读取不到电压解决方案:
我迫不及待换个寄存器读个电压试试。 一度电压又是000.整个人都蒙了 这里卡的时间最长 一两个星期吧。我期初怀疑是不是时序不对。但是能读取到默认地址呀。哦哦哦,后面发现晶振没有装。装上还是没有反应。后面我请教旁边的大佬。他自己写了就可以读取到电压值。我就纳闷了。程序是抄他的。怎么他可以我的不行。后面我看他的多了这么一段初始化程序。
??? 哦哦哦 原来是没有看明白数据手册导致。人家都说了写入D3命令后,7036芯片才开始正式工作。我终于也是读取到数据了
问题又来了 我明明是220的电压 怎么读出来是一长串数据呀。再看手册。
原来还要除以2的13次方。读出来怎么是168。也不对呀。原来读取到的电压校准。也就是校表。
我以为这个简单呀 只要对于寄存器写入参数不就OK了。
当我再0x18的这个位置写入000 和别的数据的时候 怎么不会变呀数据。还是168. 再看数据手册。原来要发命令c9,数据0005A,才能使能校表写操作。
写数据函数
电压校准过程。0x17是a相电压的校准的地址。18是B相 19是c相电压。
我这里以建准b相为例。开始先让0x18的地址写入000的数据 然后用串口打印出来看看数据是多少。
那我在0x18的地址写入0x9890应该能读取到220 了吧。然而并没有。读取到10 纳尼。 再看手册。原来我还没有adc增益设置。
带我设置个2倍增益看看。再在0x18的位置写0000读取数据。成功的读取到数据193
一段操作
终于看到了心目中的电压 完结 撒花
真的是大佬说的话 自己要走的路,一步也不会少。只有自己渡劫成功。才会成长!