完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近用Arduino操作AD5933出现了问题,读取状态寄存器的时候 老是读取0x70,有没有知道是什么原因啊。
贴一下我的代码 // AD5933 control // #include void writeAD5933(byte add, byte data) { Wire.beginTransmission(13); // this chip address is 0001101 13 Wire.write(add); Wire.write(data); Wire.endTransmission(); // stop transmitting } byte readAD5933(byte add) { byte date = 0; Wire.beginTransmission(13); // 00011011 Wire.write(byte(0xB0)); // Address pointer Wire.write(add); // Wire.endTransmission(); // stop transmitting Wire.requestFrom(13, 1,true); if(Wire.available()) { date = Wire.read(); // receive high byte (overwrites previous reading) } return date; } void setup() { Wire.begin(); Serial.begin(9600); } int temp = 0; byte templow = 0; byte temphigh = 1; byte statusReg = 0; float temper = 0.0; void loop() { // writer error. // step 1: write temperature test control code to register delay(1000); delay(1000); writeAD9777(byte(0x80), byte(0x90)); templow = 0x00; while(!(templow 0x07)) { templow = readAD5933(byte(0x8F)); Serial.println(templow,BIN); // print the reading delay(1000); } Serial.println(templow,BIN); // print the reading Serial.println("success!"); // delay(1000); } 读写寄存器的函数应该是没有问题的,因为我通过读写别的寄存器 ,如起始频率寄存器,频率论扫数寄存器等,先写入数据,再读取数据,发现能够读取之前写入的数据。 您好!状态寄存器的含义见数据手册表14。建议对芯片发一个reset命令试一试。 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
986 浏览 0 评论
859 浏览 1 评论
794 浏览 1 评论
电路小知识 | 交流电路复数的基础知识以及相位差和电抗的计算
657 浏览 0 评论
1902 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 19:22 , Processed in 0.678154 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号