ZHCAB74D September 2018 – March 2022 AFE030 , AFE031 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S
引用的示例程序:boostxl_afe031_f28379d_dacmode
若要在軟件中啟用 DAC 模式,需要完成以下流程:
在 DAC 模式下發(fā)送信息的方式與 PWM 模式的工作方式非常相似。一個(gè) PWM 源用于將 DAC 模式值設(shè)置為發(fā)出的正弦斜坡的正確值。第二個(gè) PWM 用于比特率以產(chǎn)生中斷并確定需要輸出的頻率。
如果嘗試使用該實(shí)現(xiàn)來達(dá)到非常精確的頻率,則必定會出現(xiàn)問題。可以通過Equation1 來查看該問題。
如果嘗試生成 131.25kHz,那么只能更改兩個(gè)變量。一種方法是在正弦表中設(shè)置階躍數(shù)。例如,如果正弦表中有 10 個(gè)階躍,則中斷頻率為:
中斷頻率 =(正弦表中的階躍數(shù))*(所需信號的頻率)
中斷頻率 = 1.3125MHz
在使用 200MHz 時(shí)鐘時(shí),即使在 152 或 153 個(gè) CPU 周期中發(fā)生中斷,中斷頻率也將分別為 1.31579MHz 和 1.30719MHz。這些頻率不處于表 4-1 中頻率容差的規(guī)格范圍之內(nèi)。這意味著設(shè)置階躍大小無法正確實(shí)現(xiàn)精確的頻率生成。
另一種思路是設(shè)置中斷頻率。讓我們將中斷設(shè)置為 1MHz,這是可以生成的頻率。正弦波中的階躍數(shù)將是:
正弦表中的階躍數(shù) = (1MHz)/(131.25kHz)
正弦表中的階躍數(shù) = 7.61905
利用 F28379D 的浮點(diǎn)功能,處理器可以跟蹤該余數(shù),現(xiàn)在精度取決于正弦表,而不是 1MHz 時(shí)鐘??梢允褂靡韵鹿絹泶_定階躍大小:
階躍大小 =(正弦表中的點(diǎn)數(shù))/(正弦表中的階躍數(shù))
利用 4096 正弦表并繼續(xù)執(zhí)行前一個(gè)示例,這樣可以將階躍大小確定為 537.6。這意味著在每次中斷中,正弦表都會再產(chǎn)生 537.6 的階躍。程序?qū)?shù)組進(jìn)行排序,因此該數(shù)字將去尾取整為 537,但添加該數(shù)字后、程序在正弦表中移動(dòng)時(shí),下一個(gè)階躍將忽略階躍大小的小數(shù)部分。下面顯示了一個(gè)中斷例程示例:
需要注意的一點(diǎn)是,在該實(shí)現(xiàn)中創(chuàng)建了一個(gè) 1MHz 中斷,它僅將數(shù)據(jù)從一個(gè)存儲器地址移動(dòng)到另一個(gè)存儲器地址。一種降低 CPU 密集操作的方法是利用 C2000 的 DMA(直接存儲器訪問)。DMA 外設(shè)根據(jù)觸發(fā)事件將數(shù)據(jù)從一個(gè)存儲器地址移動(dòng)到另一個(gè)存儲器地址。使用被選為通過 SPI 發(fā)送的正確數(shù)據(jù)來預(yù)填充兩個(gè)緩沖區(qū),并使用 DMA 在兩者之間進(jìn)行切換。當(dāng)從一個(gè)緩沖區(qū)切換到另一個(gè)緩沖區(qū)時(shí),舊緩沖區(qū)中將重新填充這些值。
在 DAC 模式軟件中,使用一個(gè) 1MHz PWM 信號來生成一個(gè) DMA 事件,將數(shù)據(jù)從這些緩沖區(qū)之一移動(dòng)到 SPI TX 緩沖區(qū)中。每次使用后都需要重新填充舊緩沖區(qū),因此 DMA 將在每次完成整個(gè)緩沖區(qū)讀取后觸發(fā)一個(gè)事件。在該中斷期間,會對緩沖區(qū)進(jìn)行切換,舊緩沖區(qū)被重新填充。通過該實(shí)現(xiàn),可以調(diào)整 CPU 利用率與存儲器之間的權(quán)衡點(diǎn),并且可以相應(yīng)地調(diào)整緩沖區(qū)的大小。如果有額外的存儲器,則可以通過使用更大的緩沖區(qū)來減少 CPU 開銷。如果沒有大量的可用存儲器,則較小的緩沖區(qū)大小會增加 CPU 開銷。
PWM2 中斷以與 PWM 模式軟件實(shí)現(xiàn)完全一樣的方式處理 FSK 協(xié)議的所有需求。要實(shí)現(xiàn)的協(xié)議是可重復(fù)的模式,它允許軟件基于周期數(shù)。一個(gè)周期數(shù)是一位的時(shí)長。在該實(shí)現(xiàn)中,將發(fā)送 33 位(每個(gè)字 11 位,三個(gè)字)。在每個(gè)周期中,通過檢查下一位的值和階躍大小變化,能夠以標(biāo)記頻率或空間頻率發(fā)送正弦表。33 個(gè)周期之后,系統(tǒng)停止發(fā)送 DAC 值并進(jìn)入靜默模式。209 個(gè)周期之后,周期數(shù)將被重置,軟件開始再次發(fā)送數(shù)據(jù)包。在由 PWM2 中斷來處理 FSK 傳輸?shù)那闆r下,CPU 的主要功能被釋放,可用于其他應(yīng)用。默認(rèn)情況下,軟件示例將發(fā)送表 4-1 中引用的 packet_1,但可以通過將 packet_to_send 變量設(shè)置為零來將其更改為 packet_0。