其原理并不復雜,但它并不能輕松地適配到標準的微控制器硬件上。我確實發(fā)現(xiàn)有人使用SPI接口來維持時序,但這要求每個真實的數(shù)據(jù)位使用至少三個SPI數(shù)據(jù)位,對于通過位拆裂獲得CPU性能而言優(yōu)勢不大。由于時序并不嚴格,如果您在固件中實現(xiàn)接口(位拆裂),CPU將專門用于翻轉驅動信號直至LED全部更新。這意味著您需要禁用所有中斷,在整個過程中不對任何其它輸入做出響應。如果您有1,000個LED,則更新時間為(0.40微秒+0.85)*24位*1,000個LED=30,000微秒或30毫秒。這可能并不是什么問題,但如果您要以30Hz的頻率更新LED,將幾乎占用的CPU!
廈門岳航計算機工程有限公司
聯(lián)系人:李素云
企業(yè)QQ:2851195446,2851195466
手機:18965423501
座機:0592-5165501
在編寫代碼時,我習慣于在不得不較長時間禁用中斷的地方避免阻塞代碼或條件,特別在系統(tǒng)中有用戶接口或是需要與其它處理器通信的情況下尤為如此。我的目的是盡量減輕CPU的負擔,讓硬件完成大部分工作,就如同今天常見的內(nèi)部UART或SPI模塊所做的工作一樣。賽普拉斯PSoCUDB有幾項特性能讓這項工作變得非常簡便。每個UDB在數(shù)據(jù)通路中有兩個4字節(jié)FIFO和一個移位器。在實現(xiàn)UART時,您可將一個FIFO用作TX緩存,另一個用作RX緩存。對于WS2811/12,我只需要一個輸出FIFO和移位器。我決定配置硬件,為每個器件每次生成一次中斷。中斷處理器將加載24位(3字節(jié))數(shù)據(jù),直到FIFO為空時返回。采用這種方法,可以每30微秒中斷一次,而不必以150毫微秒或更短間隔禁用全部中斷和位拆裂。我決定使用的微控制器是賽普拉斯PSoCCY8C4245AXI。該微控制器大批量采購價格約為一美元,有四個UDB,運行頻率為48MHz,足以滿足此項工作所需的速度和硬件要求。
Allen Bradley 1756-IC16
CP313D
6SE6440-2UD21-5AA1
Allen Bradley 1771-OMD
Allen Bradley 20-COMM-R
Allen-Bradley 1769-SM1
Allen Bradley 1794-ID2
Allen Bradley 1336-SCR-SP1A
Modicon 140DDI85300
Allen Bradley 1771-P5 PLC-5
Allen Bradley 1746-P2
Allen Bradley 1769-IF4XOF2
Allen Bradley 1769-OF2
Allen Bradley 2711P-RN6
Allen Bradley 2706-D21J8
Allen Bradley 20-COMM-R
140DAI74000
AMCI 7662
LC1D150006F7
Allen Bradley 1734-AENT
Allen Bradley 1756-A7
Allen Bradley 1756-IF6I
Allen Bradley 2711C-T4T
Allen Bradley 1794-IE8 VIPA315-2DP01
VIPA-375-0LA61
VIPA-375-0LA41
VIPA-375-0LA21
VIPA I 7621
VIPA 7733
VIPA 7643
VIPA 7642
VIPA 7641
VIPA 7636
VIPA 7227
VIPA 5007V10
VIPA 441-4UA14
VIPA 314-1SL01
SSN-BG89D
SSN-BG89A
6EP1333-2AA01
ABE7CPA31
Allen Bradley 1746-OA16
140DDI35300
Allen Bradley 1756-M08SE
CA6-115-11-277
Allen Bradley 1769-IF4