C2000系列DSP規避移相功能缺陷導致脈衝丟失的一種方法

來自專欄匠人電子實驗室12 人贊了文章

此前寫過一篇文章,分析德州儀器C2000系列DSP移相同步功能的一個缺陷,導致在大範圍移相時出現的脈衝丟失問題。

匠人時尚:德州儀器C2000系列DSP移相同步功能的缺陷?

zhuanlan.zhihu.com
圖標

最近,一位西安交大的博士遇到相同的問題,經過跟他的討論,發現在他這種特定應用下,是可以規避脈衝丟失問題的,本文給出了一個簡單的實例,對方法做一個介紹。

上圖為脈衝丟失時刻的波形。

前文中介紹了,出現脈衝丟失問題的原因是移相值與比較值發生跨越,導致二者在一個週期內沒能發生匹配,所以驅動信號在這個週期內就沒有發生任何變化,我們看到的現象就是「脈衝丟失」。如下圖:

想避免出現脈衝丟失,可以通過規避比較值與移相值跨越的情出現。根據脈衝丟失的原因,當移相值在0與CMP(比較值)之間變化或在CMP(比較值)與PRD(週期值)之間變化,是不會出現脈衝丟失問題的,對於大部分應用,移相值變化範圍並不會非常大。例如移相全橋的應用,就不會出現脈衝丟失問題,也正因為這個原因,C2000移相同步功能的這個缺陷鮮為人知。

關於這個解決方案,首先我們要針對C2000系列的同步信號傳遞方式做一些介紹。

上圖是280x,2801x,2802x,2803x等DSP的ePWM模塊連接結構,手冊中還可以查到2833x的結構,本次以上圖為例。其中EPWMxSYNCI是模塊同步信號的輸入端,當有脈衝輸入時,將該模塊計數(CTR)器會被設定為PHS寄存器的預設值。EPWMxSYNCO是模塊同步信號的輸出端,連接到下一個模塊的輸入端,用於同步下一個模塊。SYNCO信號有三種產生的方式如下:

  1. 直接透傳SYNCI的信號到下一個模塊,這種方式也是我當年的畢業設計用應用的,這樣可以避免途經的模塊移相角對後面的模塊相位的影響。實際應用中可能存在一個時鐘的延遲。
  2. CTR=0時產生SYNCO脈衝,即計數器歸零時產生脈衝,這種方式假設模塊1與模塊2之間的相位發生變換,模塊3也會隨之變化,導致模塊之間的移相同步值存在耦合。
  3. CMPB=CTR 這種方法可以在模塊不使用CMPB時獲得比較自由的移相方式。

本文將使用第二種同步脈衝產生方式,解決特定需求下的移相操作。第三同步脈衝產生方式將會在下一篇文章中講解,這種同步方式也許可以徹底解決在雙向傳輸的雙有源橋調製問題,且不會導致脈衝丟失,不過我還需要進一步推導一下。

使用第二種同步方式時,第一個ePWM1模塊並不需要設置輸入同步信號,該模塊作為同步的主導,後面的的同步脈衝均與該模塊有關。下面以一個需求為例:

任務描述:獲得2路驅動脈衝,均為50%佔空比,相位關係在100°-260°之間變化。

50%對應的比較值CMP剛好為180°,由於相位PHS的變換範圍正好覆蓋了比較值CMP的位置,因此當移相角PHS與佔空比CMP發生跨越時,將會導致脈衝丟失一次。當佔空比50% 且移相角範圍超過180°時必然造成比較值與移相值的跨越,導致脈衝丟失的。而當前應用移相角變換範圍為160°,小於180°。如果移相角在0°-180°之間變化,就不會導致比較值與移相值跨越,也就不會因此造成脈衝丟失。

本文的設計思路是使用ePWM2模塊作為中繼,提供一個固定的移相值,ePWM3產生第二路50%佔空比的驅動脈衝,使ePWM2與ePWM3之間的移相角始終在0°-180°之間變化,加上固定的90°移相角,剛好獲得90°-270°移相效果,從而規避了移相值與比較值的跨越。具體移相方法見下圖:

使用ePWM2模塊產生了一個固定的90°移相角作為中繼,使ePWM1與ePWM3之間的相位可以在大於90°小於270°之間變化,當然由於本實例的週期分度比較粗,變化範圍會有所減小,畢竟週期中的一個值要對應3.6°了。值得說明的是C2000系列的移相併不是滯後移相,而是超前移相,因此上圖中滯後1/4週期的移相,設置移相寄存器為超前3/4週期。

本方法的設計思路就是在需要做大移相角移相時,使用一個ePWM模塊作為中繼,提供一個固定的移相角,從而避免移相值與比較值發生跨越,進而避免出現脈衝丟失的現象。這個方法為了規避脈衝丟失的問題,使用了一個額外的ePWM模塊,造成了片上資源的浪費,但從思路上來看,這個方式是有效的,希望這篇文章能夠對你們的設計有幫助。

歡迎關注我的微信公眾好與知乎專欄:匠人電子實驗室


推薦閱讀:
查看原文 >>
相關文章