硬件驅動篇 | 5x24 模擬開關陣列芯片 CH446X


5x24 模擬開關陣列芯片 CH446X


 

一、概述

  CH446X 是 5x24 矩陣模擬開關芯片。CH446X 包含 120 只模擬開關,分布於 5x24 信號通道矩陣的各個交叉點,每只模擬開關都可以獨立的開啟或者關閉,從而實現 5x24 信號通道的任意路由。

 

二、引腳

 

 

 

三、功能說明

  參考首頁的框圖,CH446X 芯片內部分為三個部分:接口控制邏輯、128 只鎖存器、120 只模擬開關陣列。

  128 只模擬開關分布於由 24 個 X 端口和5 個 Y 端口組成的 5x24 矩陣的每個交叉點,使得任意一個 X 端口和任意一個 Y 端口之間能夠在需要時導通或者斷開,甚至可以使某兩個 X 端口分別導通到某個 Y 端口,實現任意兩個 X 端口之間或者任意兩個 Y 端口之間的間接導通(CH446X 雖然有 128 只鎖存器,但是只有 120 只模擬開關,有 8 只鎖存器沒有任何用途)

  128 只鎖存器用於分別控制 128 只模擬開關的導通或者斷開,128 只鎖存器被編址為 0 到 127,由 7 位地址 ADDR6~ADDR0 譯碼后選擇。從 RST 引腳輸入高電平復位信號可以將所有鎖存器清 0,從而導致所有模擬開關斷開。需要開啟或者關閉某一模擬開關時,應該通過 7 位的 ADDR 提供鎖存器的地址,並通過 DAT 提供開關數據(1 則導通,0 則關閉),然后產生一個 ACT 激活脈沖,將開關數據寫入由 ADDR 譯碼指定的鎖存器,實現對指定的某個模擬開關的控制。

  接口控制邏輯主要用於產生 ADDR 地址和 ACT 激活脈沖。在串行地址輸入方式下,由 CS/CK 引腳輸入時鍾,在其每個上升沿,從 DAT 引腳依次輸入 ADDR6、ADDR5直到ADDR1、ADDR0(分別對應於 AY2、AY1 直到 AX1、AX0),CS/CK 引腳需要提供 7 個上升沿得到 7位地址,並由 STB 引腳輸入的高電平選通脈沖直接產生 ACT 激活脈沖。

  實際上,在串行地址輸入方式下,ACT 信號只是來自 STB 引腳的輸入。RST 復位信號優先於 ACT 信號,當 RST 輸入高電平時,ACT 信號將被忽略,所有鎖存器總是被清 0。在 ACT 激活脈沖有效期間,DAT 引腳可以動態改變輸入的開關數據,並使得相應的模擬開關實時地導通或者關閉,但是在 ACT 信號結束之前(即STB 的下降沿之前),DAT 引腳的輸入數據應該保持穩定以便正確地鎖存數據。

  下圖是一個串行地址輸入的實例,控制 14H 地址(Y1 和 X4 之間)的模擬開關,先開再關。

  下表是 CH446X 芯片 7 位地址 ADDR 的譯碼真值表,也是 120 只模擬開關的編址表。

 

四、應用 -- 串行地址輸入

  

  如果 VEE 接負電壓,那么模擬開關可以通過負電壓的模擬信號,否則 VEE 接 GND,模擬開關只能通過高於-0.3V 的模擬信號。

  由於模擬電路與數字電路共用 VDD,為減少干擾,VDD 和 VEE 引腳必須外接退耦電容,並且建議將數字輸入信號的邊沿適當放緩,降低傳輸頻率。另外,對於強干擾的應用環境,單片機可以每隔數秒定期對 CH446 進行刷新,確保各個模擬開關處於正確的開關狀態。

  串行地址輸入方式下的控制步驟:通過 DAT 引腳依次提供 7 位地址並用 CS/CK 引腳的 7 個上升沿移入 CH446,通過 DAT 引腳提供數據、向 STB 引腳提供一個高電平脈沖。

  如果單片機通過 SPI 總線連接 CH446X,那么 SPI 提供的一字節 8 位數據的位 7 將被 CH446 丟棄,SPI 的位 6 到位 0 作為地址,單片機 SPI 的串行數據輸出引腳連接 DAT 引腳提供開關數據,單片機使用一個獨立引腳控制 CH446 的 STB 引腳。

  圖為8x16 矩陣模擬開關芯片CH446Q,CH446X類似

五、程序接口

 1 /*  *****************************************************
 2 //  函數功能:CH446X模擬開關復位,即通道全部關閉
 3 //  輸入參數:
 4 //  輸出參數:
 5 //  函數返回:
 6 //  修改記錄:
 7 //  補充說明:
 8 *****************************************************  */
 9 void Control_Switch_Reset(void)
10 {
11     CH446X_RST = 1;        // RST引腳高電平
12     CH446X_RST = 1; 
13     CH446X_RST = 1; 
14     NOP;                             // 延時
15     NOP; 
16     NOP; 
17     NOP; 
18     NOP; 
19     NOP; 
20     CH446X_RST = 0; 
21     CH446X_RST = 0;    
22 }
23 
24 /*  *****************************************************
25 //  函數功能:CH446X模擬開關通道選擇導通
26 //  輸入參數:
27 //  輸出參數:
28 //  函數返回:
29 //  修改記錄:
30 //  補充說明:
31 *****************************************************  */
32 void Control_Switch_State(u8 Address,u8 State) 
33 { 
34     u8 ByteCnt; 
35     
36     CH446X_STB = 0; 
37     CH446X_DAT = 0; 
38     NOP; 
39     NOP; 
40     for(ByteCnt = 0; ByteCnt < 7; ByteCnt++ ) 
41     { 
42         CH446X_CK = 0; 
43         NOP; 
44         if( Address & 0x80 ) 
45         { 
46             CH446X_DAT = 1; 
47         } 
48         else 
49         { 
50             CH446X_DAT = 0;    
51         } 
52         CH446X_CK = 1; 
53         NOP; 
54         NOP; 
55         NOP; 
56         NOP; 
57         NOP;    
58         Address <<= 1;             // 左移1位
59     } 
60     CH446X_CK = 0; 
61     if( State == 1 ) 
62     { 
63         CH446X_DAT =1;    
64     } 
65     else 
66     { 
67         CH446X_DAT =0;    
68     } 
69     NOP; 
70     NOP; 
71     NOP; 
72     NOP; 
73     CH446X_STB =1; 
74     NOP; 
75     NOP; 
76     CH446X_STB =0; 
77     NOP; 
78     NOP; 
79 } 
80 
81 void main( void ) 
82 { 
83     Control_Switch_Reset();
84     
85     Control_Switch_State(0x00, 1);    // Y0,X0導通
86     Control_Switch_State(0x01, 1);    // Y0,X1導通 
87     while(1)
88     {
89     
90     } 
91 
92 } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM