完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//SPI读数据
//从7846/7843/XPT2046/UH7843/UH7846读取adc值 u16 ADS_Read_AD(u8 CMD) { u8 count=0; u16 Num=0; TCLK=0;//先拉低时钟 TCS=0; //选中ADS7843 ADS_Write_Byte(CMD);//发送命令字 delay_us(6);//ADS7846的转换时间最长为6us TCLK=1;//给1个时钟,清除BUSY TCLK=0; for(count=0;count<16;count++) { Num<<=1; TCLK=0;//下降沿有效 TCLK=1; if(DOUT)Num++; } Num>>=4; //只有高12位有效. TCS=1;//释放ADS7843 return(Num); } 以上函数中的读取段,也就是for循环中貌似只有15个下降沿何以读取16位数据。是否可以将清除BUSY时的 TCLK=1;TCLK=0;这两句顺序对调下? 这是我软件仿真的图片,在清除BUSY后,好像只有15个下降沿。请原子哥赐教! |
|
相关推荐
3个回答
|
|
|
|
|
|
这个不能看能否正常读数。我试过将Num>>4这句改成右移3位或者5位,经过屏幕校准后都是正确的,能正常手写,将BUSY位调转后也是一样,所以我认为这只是将读取结果放大或者缩小2倍,经过校准没什么影响。
个人认为原程序for循环中只有15个下降沿,因为第一次循环中没有下降沿,最后结果右移4位后实际上只有11位有效数据。 |
|
|
|
TCLK=1;//给1个时钟,清除BUSY
TCLK=0; for(count=0;count<16;count++) { Num<<=1; TCLK=0;//下降沿有效 TCLK=1; if(DOUT)Num++; } 因为在进入循环的时候TCLK为0,所以第一个TCLK=0并没有体现出下降沿,你说的15个是正确的. |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:27 , Processed in 0.873157 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号