完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位工程师你们好,最近在调试ad2s1210,利用spi通讯,硬件的励磁输出已经没有问题,且写入ad2s1210更改励磁频率也能实现,但是读取时却无法读出数值,始终为0,同时LOT和DOS寄存器始终为低电平,按照数据手册复位无法清除,程序是根据例程移植而来,硬件上cs始终置低,所以去除了对cs的操作部分,芯片主频为40mhz,下面附上程序,麻烦各位帮忙解答,谢谢。
void AD2S1210Initiate() { gpio_set(RESET, 0); gpio_set(SAMPLE, 1); delay_ad(50000); gpio_set(RESET, 1); delay_ad(5000000); gpio_set(SAMPLE, 0); delay_ad(1); gpio_set(SAMPLE, 1); } void SPIRead(unsigned char count, unsigned char *buf) { unsigned char i = 0; unsigned char j = 0; unsigned int iTemp = 0; unsigned char RotateData = 0; for(j=count; j>0; j--) { for(i=0; i<8; i++) { gpio_set(SCLK, 1); RotateData <<= 1; //Rotate data delay_ad(1); iTemp =(((GPIOB_BASE_PTR->PDIR) >> (0)) & 1) ;//(MISO); //Read SDO of AD2S gpio_set(SCLK, 0); if(iTemp>=1) { RotateData |= 1; } delay_ad(1); } *(buf + j - 1)= RotateData; } } void ReadFromAD2S1210(unsigned char mode, unsigned char address, unsigned char * buf) { if (mode==CONFIG) { //write control register address buf[0] = address; gpio_set(SCLK, 1); delay_ad(4); gpio_set(WR, 1); delay_ad(1); gpio_set(WR, 0); delay_ad(1); SPIWrite(1,buf); gpio_set(WR, 1); delay_ad(1); //write control register address //read 1-byte register gpio_set(SCLK, 1); delay_ad(1); gpio_set(WR, 1); delay_ad(2); gpio_set(SCLK, 0); delay_ad(1); gpio_set(WR, 0); delay_ad(1); SPIRead(1,buf); gpio_set(WR, 1); delay_ad(2); //read 1-byte register } else if (mode==POSITION||mode==VELOCITY) { gpio_set(SAMPLE, 1); delay_ad(1); gpio_set(SAMPLE, 0); delay_ad(5); //read 3-byte register gpio_set(SCLK, 1); delay_ad(1); gpio_set(WR, 1); delay_ad(3); gpio_set(SCLK, 0); delay_ad(1); gpio_set(WR, 0); delay_ad(1); SPIRead(3,buf); //read data register gpio_set(WR, 1); delay_ad(2); //read 3-byte register } } |
|
相关推荐
3个回答
|
|
现在我的故障寄存器可以清除了,但是数据始终读不到,我的引脚设置了内部上拉,所以数值始终是255,我测了一下ad2s1210的sdo引脚,只有一点几伏,接到MISO就会被内部上拉拉到5v。
|
|
|
|
ZONEK 发表于 2019-1-16 09:59 您好,我通过上电复位无法置高故障引脚,您是怎么置高你的故障引脚呢,能和我说说你的问题吗,或许可能给我的工作带来一些指导。谢谢! |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
998 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1392 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1940 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4273 浏览 2 评论
9065 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1538浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1698浏览 2评论
999浏览 2评论
1675浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1392浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:12 , Processed in 0.979224 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号