标签:14 AD9834 配置 16Bits Write SPI 频率 寄存器
SPI设置
注意,虽然手册上CPOL(CLK空闲时电平)为低,但实测是是高电平
连接
SYNC 为片选引脚,使用时拉低
FSE/PSE为频率与相位寄存器选择,均拉低即可
void SPI_Write_16Bits(uint16_t transdata) { csset(); uint16_t arrofdata[1]; arrofdata[0]=transdata; HAL_SPI_Transmit(&hspi1, (uint8_t* )arrofdata, 1, HAL_MAX_DELAY); csreset(); }
频率设置
由于输入为十六位数据,而频率设置为28位,故传输两次数据
xx +后14位
xx +前14位
xx为频率寄存器的标志,10为寄存器1,01为寄存器0
例:传输数据100100100100100100
传入寄存器1
则传输
10+00100100100100
10+00000000001001
频率与传入的值通过拟合后为x*179/50
int t=123456;//频率值 uint16_t a=0x8000,b=0x8000; t=t*179/50; if(t>16383){
b|=(((t>>14)<<14)^t); a|=(t>>14);} else b|=t; //处理输入的两次值 HAL_Delay(1000); SPI_Write_16Bits(0x2100); SPI_Write_16Bits(0XC000); SPI_Write_16Bits(0x2100);//init
SPI_Write_16Bits(0x2800);//选择寄存器1 SPI_Write_16Bits(b); SPI_Write_16Bits(a); SPI_Write_16Bits(0x2808);//选择寄存器1输出
由于int范围,t最高10M,在低于10hz时误差较大
标签:14,AD9834,配置,16Bits,Write,SPI,频率,寄存器 来源: https://www.cnblogs.com/SFWR-YOU/p/15585246.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。