完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用STM32F207控制,AD5315供电和参考电压都是3.3V,结果无电压输出,以下是相关代码: void main(void) { int i,j; SystemInit(); delay_init(120); GPIO_Init(); SPI_Init(); GPIOA->ODR |= SCLK_5315; GPIOA->ODR |= SDA_5315; GPIOA->ODR = ~A0_5315; Write_5315(DACA,0x3FF); while(1); } void Write_5315(u8 number,u16 data) { int i; u8 AddressByte=0x18; u8 PointerByte; u16 DataByte; switch(number) { case DACA: PointerByte=0x01; break; case DACB: PointerByte=0x02; break; case DACC: PointerByte=0x04; break; case DACD: PointerByte=0x08; break; default :break; } DataByte=0x3000|(data<<2); //address byte for(i=7;i>=0;i--) WriteOneBit((AddressByte>>i) 0x01); WriteOneBit(0);//wait //pointer byte for(i=7;i>=0;i--) WriteOneBit((PointerByte>>i) 0x01); WriteOneBit(0);//waite //DataByte for(i=15;i>=0;i--) WriteOneBit((DataByte>>i) 0x01); WriteOneBit(0);//wait WriteOneBit(0);//wait GPIOA->ODR |= SDA_5315; } void WriteOneBit(u8 bit) { if(bit) { GPIOA->ODR =~ SCLK_5315; delay_us(1); GPIOA->ODR |= SDA_5315; delay_us(1); GPIOA->ODR |= SCLK_5315; delay_us(1); } else { GPIOA->ODR =~ SCLK_5315; delay_us(1); GPIOA->ODR =~ SDA_5315; delay_us(1); GPIOA->ODR |= SCLK_5315; delay_us(1); } } |
|
相关推荐
1个回答
|
|
首先请您核查供电电压和参考电压是否正确,然后看接口时序,是否可以正确读写寄存器的值,另外,LDAC是否置高电平,或者拉低后置高。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 02:29 , Processed in 0.458841 second(s), Total 43, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号