完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用PIC18LF4520通过SPI配置AD9911寄存器,测试SDO端口有正确脉冲,SYNC_CLK引脚有25MHz信号(我使用100MHz恒温晶振),IOUT以及IOUTB没有信号输出。我计划使用Single Bit, 2-Wire Mode,实现AD9911点频和频率扫描功能。我将P0、P2、P3、SDIO1悬空了。另附上程序如下,在下先谢过了!
//AD9911Alpha.c //Single-tone Mode //12.5MHz is expected //auhtor cheung, created on 2013/06/06 15:42 #pragma config OSC=HS #pragma config PWRT=ON, BOREN=OFF #pragma config WDT=OFF #pragma config LVP=OFF //configuration bits setting #include #include #include #define uchar unsigned char #define MRESET LATCbits.LATC1 //AD9911 master reset outpout, PORTC pin1 #define SYNC LATCbits.LATC2 //AD9911 SYNC_IO function output, PORTC pin2 #define SCK LATCbits.LATC3 //Serial CLK #define SDO LATCbits.LATC5 //Serial Data Output #define CSN LATDbits.LATD4 //CSN output pin, PORTD pin4 #define UPDATE LATDbits.LATD5 //AD9911 IO_UPDATE function output, PORTD pin5 #define PRO LATDbits.LATD6 //AD9911 Profile Pin1, PORTD pin6 void Initial(void); void SPIiniti(void); //function prototypes void main() { Initial(); SPIiniti(); CSN=0; //CSN Low Delay10TCYx(10); //a delay in 40us WriteSPI(0b00000000); //instruction byte, write operation, CSR WriteSPI(0b00100010); //Phase 2 of IO cycle, disable CH3CH2CH0, //enable CH1, bit3 must be 0, single bit serial(3-wire mode), MSB first WriteSPI(0b00000100); //CTW0 is accessed during phase 2, 4 bytes wide WriteSPI(0b00100000); //12.5MHz is expected, FTW, bits<31:24> WriteSPI(0b00000000); //bits<23:16> WriteSPI(0b00000000); //bits<15:8> WriteSPI(0b00000000); //bits<7:0> CSN=1; //CSN High UPDATE=1; //IO_UPDATE High, a rising edge triggers data transfer from the //IO port buffer to active registers Delay10TCYx(10); //a delay in 40us UPDATE=0; //IO_UPDATE Low while(1); } void Initial() { INTCON=0x00; PIE1=0x00; PIE2=0x00; TRISCbits.TRISC1=0; //RESET output TRISCbits.TRISC2=0; //SYNC_IO output TRISCbits.TRISC3=0; //SCK output TRISCbits.TRISC5=0; //SDO output TRISDbits.TRISD4=0; //CSN output TRISDbits.TRISD5=0; //IO_UPDATE output TRISDbits.TRISD6=0; //Profile Pin1 output MRESET=1; //Issue a Master Reset Delay100TCYx(50); //a delay in 2ms MRESET=0; //Master Reset Low Delay100TCYx(50); //a delay in 2ms SCK=0; //SCK Low SDO=0; //SDO Low SYNC=0; //SYNC_IO Low CSN=1; //CSN High UPDATE=0; //IO_UPDATE Low PRO=0; //Profile Pin1 Low } void SPIiniti() { OpenSPI(SPI_FOSC_16,MODE_01,SMPEND); } |
|
相关推荐
3个回答
|
|
1. 首先核对硬件连接,芯片上电稳定后,master_reset后测试SYNC_CLK是否有12.5MHz的信号,如果没有,请核对芯片供电接地引脚电平,检测参考时钟的幅度和频率是否满足要求;
2.系统时钟正确后,对寄存器进行配置,确保能够正确读写寄存器的数据,读出来的数据是写入的有意义的数据; 3.寄存器的值,建议您下载评估板软件进行设置,设置完成后就可以看到寄存器的值了; 4.将这些值发到AD9910,并且给一个I/0_updata脉冲; 5.建议先让AD9910工作在Profile0的单音模式,对应的P0,1,2 引脚需要接低电平; 6. 你可以参考我们的示例代码:http://www.analog.com/zh/content/cast_index_code_example/fca.html |
|
|
|
dang28 发表于 2018-11-30 09:52 我用100MHz参考时钟,SYNC_CLK有25MHz信号,这是否说明IO_UPDATE脉冲时间是够的? 用示波器看单片机SDO和SCK时序也没问题,就是写不了寄存器,想禁止SYNC_CLK输出也不成功。我上次问过未使用的输入引脚处理问题,我想使用AD9911的点频与频率扫描功能,写寄存器用single-bit(2-wire)模式,这样P0、P2、P3以及SDIO1、SDIO2是否就接地,另外如不使用SYNC_IO功能,SDIO3是否也是接地处理?感谢工程师在面对大量问题时所保持的敬业精神,感谢工程师的对用户的耐心。 还有一个问题关于芯片内PLL,数据手册中建议环路滤波器使用0欧姆电阻是什么作用,不同分频比时电阻值也一样吗? |
|
|
|
60user174 发表于 2018-11-30 10:03 1. Master_reset和IO_UPDATE的脉宽时间最小都是1个Sync_CLK周期; 2.读写不正常您把时序发过来看看呢; 3. 单音、两线模式,将P0,P1,P3接地,SDIO1、SDIO2、SDIO3可floating; 4.环路滤波建议这样连接,不同的分频比是一样的: |
|
|
|
只有小组成员才能发言,加入小组>>
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1757 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4131 浏览 2 评论
8853 浏览 1 评论
3062 浏览 1 评论
7021 浏览 2 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1196浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1508浏览 2评论
1433浏览 2评论
1197浏览 1评论
1040浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-11 18:17 , Processed in 1.053188 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191