stm32除錯ad9854的總結,最近一段時間因為比賽需要自己製作訊號源,於是在某寶上選用了ad9854 dds模組,內部結構就不介紹了,手冊上都有。該模組可以產生i、q兩路正交輸出訊號,即一路正弦一路余弦訊號,還有一路比較器的輸出訊號,即方波訊號。如果對輸出訊號幅度沒要求的話也可以選擇ad9851 這個模組還是比較經典的。除錯方法與9854類似。我採用的是序列通訊模式,比較節省io口。
首先,對ad9854進行初始化,根據手冊中時序圖進行**編寫,序列模式下s/p必須接低電平,其餘功能io口設定的輸出輸入分別為推挽輸出模式和上拉輸入模式。初始化程式:
`void ad9854_init_s(void)`
其次,開始給暫存器對應位址寫值,序列通訊位址對應0x00~0x0b,並行通訊寫位址方式與序列有所區別,具體參考手冊。簡單的頻率幅度控制的話,關心的位址只有0x02(i通道頻率控制位址) 0x03(q通道頻率控制位址) 0x07(倍頻位址) 0x08(i通道幅度控制位址) 0x09(q通道幅度控制位址)。
暫存器寫值先寫低位,在寫高位。
0x07位址一共4個位元組,寫值為data[3]=0x00;data[2]=0x4a;data[1]=0x00;data[0]=0x60;如果只修改倍頻係數的話只需要修改data[2]的值(範圍4-20倍,實際最大10倍頻),若要其他功能對照手冊修改對應位址的值即可。
0x02位址一共6個位元組,100m對應頻率字為data[0]=55;data[4]=55;data[3]=55;data[2]=55;data[1]=55;data[0]=55;換算為16進製制數後1m=940000000000;寫值後只需進行移位送入對應位址,方便以後頻率步進,掃頻功能。0x03同。有人就會問了:這裡頻率設定了為什麼還要設定倍頻係數呢?關於倍頻係數,如果輸出頻率比較高,而倍頻係數比較小的話,輸出波形會失真,因此倍頻係數根據你輸出的頻率要進行相應的設定。頻率設定函式**如下:void ad9854_setfre(long long fre) //最高輸入為2^48
//若要i、q輸出不同頻率,0x03輸入值重新定義個陣列即可。
0x08位址一共2個位元組,經實測10mv=450;幅度設定函式**如下:void ad9854_setsine(u16 shape)//最高輸入2^16
;a[1]=shape>>8;
a[0]=shape&0xff;
ad9854_send_data(0x08,a);
ad9854_send_data(0x09,a);
}//若需兩路不同幅度輸出,參照上面頻率控制。
這些步驟完成後,連線應該會輸出你想要的訊號,但是可能會出現恆定輸出某個頻率,並且波形很不光滑有許多台階,無論如何修改倍頻係數,輸出不會發生改變,修改頻率字輸出波形也不會按照你想得那樣變化。這個問題我整了好幾天,真的很是無奈,要求外部5v供電,剛開始用電腦usb供電以為輸入電流小而導致,後來改用穩壓電源5v供電,電流2a,還是沒有任何改善,9854模組上的gnd與微控制器的gnd是接著的,後來才發現,兩個gnd之間存在電壓差,並沒有實現真正的共地,導致晶元工作不正常。
解決方法:外部5v供電的同時將9854模組上的3.3v供電也接到微控制器上3.3v電壓處,這樣應該是構成了迴路,gnd才實現了真正的共地,問題解決。
9854這個模組還是很好用的,初始化時序沒問題的話,只要在對應位址寫值就可以實現你想要的輸出了。並行通訊的話,時序對了,跟序列位址寫值稍微有點區別,也不難,參照手冊即可。就是gnd共地問題是我發現比較困擾的地方,這就是我除錯9854時一些總結吧。
stm32硬體除錯
stm32的基本系統主要涉及下面幾個部分 一 電源 1 無論是否使用模擬部分和ad部分,mcu外圍出去vcc和gnd,vdda vssa vref 如果 封裝有該引腳 都必需要連線,不可懸空 2 對於每組對應的vdd和gnd都應至少放置乙個104的陶瓷電容用於濾波,並接該 電容應放置盡量靠近mcu ...
stm32開關總中斷
nvic 共支援 1 至 240 個外部中斷輸入 通常外部中斷寫作 irqs 具體的數值由晶元廠商在設計晶元時決定。此外,nvic 還支援乙個 永垂不朽 的不可遮蔽中斷 nmi 輸入。nmi 的實際功能亦由晶元製造商決定。在某些情況下,nmi 無法由外部中斷源控制。在 stm32 cortex m3...
STM32除錯問題
1 stm32用iar除錯出現error pe020 identifier file is undefined 解決方法 需要在 iar的options general options library configuration裡設定一下函式庫,不然printf函式不對,將library confi...