完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 elecfans跑堂 于 2015-9-15 17:04 编辑
用spi可以调通,但是为什么模拟io口的时候就不能成功了,好生奇怪,时序之类的感觉都没什么问题,只是数据输入0V输出1.25v ,输入0.8V输出1.66v ,输入1.6v输出2v, 输入 2.5v输出2.5V,这是为什么啊,大神 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "AD7705.h" int main(void) { u16 tempB; float SJZ; STM32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 LED_Init(); //初始化与LED连接的硬件接口 uart_init(72,9600); //串口初始化为9600 LED0=0; AD7705_Init(); delay_us(1); AD7705_Write(0x20); //下一个写时钟寄存器 delay_us(1); AD7705_Write(0x04); //2.4M所以不需要分频,并且必须是逻辑1 delay_us(1); AD7705_Write(0x10); //写设置寄存器 delay_us(1); AD7705_Write(0x44); //0100 00000设置寄存器,1、自校准模式放大倍数是1 while(1) { while(DRDY); AD7705_Write(0x38); delay_us(1); while(DRDY); tempB=AD7705_read(); //DRDY逻辑低电平,表示可以从数据寄存器获取字 SJZ= tempB*2.5/65536; printf("%4.7ft",SJZ); printf("rn");//换行 LED0=!LED0; delay_ms(200); } } 其中AD的程序如下; #include "sys.h" #include "led.h" #include "AD7705.h" #include "delay.h" u8 A; u8 i; u16 TempA; void AD7705_Init(void) { RCC->APB2ENR|=1<<0; //开启辅助时钟 JTAG_Set(SWD_ENABLE); //开启SWD RCC->APB2ENR|=1<<3; //使能PORTB时钟 GPIOB->CRL&=0X000FF000; GPIOB->CRL|=0X38800333; //PB8推挽输出 上拉输入模式 GPIOB->ODR=0XFF; RES=1; delay_us(1); RES=0; delay_us(1); RES=1; delay_us(1); } void AD7705_Write(u8 date) { CS=1; delay_us(1); SCLK=1; delay_us(1); CS=0; delay_us(1); for(i=8;i>0;i--) { SCLK=0; delay_us(1); SCLK=1; delay_us(1); DIN=((date&(0x01<<(i-1)))!=0); //DIN=A; } CS=1; } u16 AD7705_read(void) { TempA=0; CS=1; delay_us(1); SCLK=1; delay_us(1); while(DRDY); delay_us(1); CS=0; delay_us(1); for(i=0;i<16;i++) { TempA<<=1; SCLK=0; delay_us(1); SCLK=1; delay_us(1); if(DOUT) TempA|=0x0001; else TempA&=0xfffe; } CS=1; return TempA; } |
|
相关推荐
2个回答
|
|
这个问题你看看你的时序,我之前做的AD7799,那个的SPI是非标准的,SPI的类型有四种,我的AD7799是在下降沿读数据,如果在上升沿读数据的话,最后一位数据读不到。
最佳答案
|
|
|
|
我刚才发现问题了,。。。。。。。。无语了,时序的问题,写时序出现问题了。。。。。。。。终于把问题解决了。。。。。。开僧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
230 浏览 0 评论
2293 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2099 浏览 3 评论
4725 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2247 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 12:49 , Processed in 0.666917 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号