AD9834配置
SPI設(shè)置
注意,雖然手冊(cè)上CPOL(CLK空閑時(shí)電平)為低,但實(shí)測(cè)是是高電平

連接
SYNC 為片選引腳,使用時(shí)拉低
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(); }
頻率設(shè)置
由于輸入為十六位數(shù)據(jù),而頻率設(shè)置為28位,故傳輸兩次數(shù)據(jù)
xx +后14位
xx +前14位
xx為頻率寄存器的標(biāo)志,10為寄存器1,01為寄存器0
例:傳輸數(shù)據(jù)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時(shí)誤差較大

浙公網(wǎng)安備 33010602011771號(hào)