CH446復(fù)位問(wèn)題

我要用單片機(jī)控制CH446切換。產(chǎn)品中一半左右出現(xiàn)上電后復(fù)位不正常的現(xiàn)象,經(jīng)測(cè)試,CH446的引腳電平都在零點(diǎn)幾伏左右,而正常復(fù)位后應(yīng)該是5V的。 單片機(jī)開機(jī)后是先延時(shí)了2秒鐘,才發(fā)送的復(fù)位信號(hào),單片機(jī)是3.5V復(fù)位,CH446是4V復(fù)位,測(cè)試了一下CH446電源部分電壓從0上升到5V大概才需要40ms,我延時(shí)了2秒才發(fā)送復(fù)位信號(hào)的,應(yīng)該可以正常復(fù)位了吧。 但怎么還有很多產(chǎn)品不能夠正常復(fù)位呢?

你給CH446復(fù)位是通過(guò)單片機(jī)I/O口復(fù)位的嗎?CH446芯片工作電壓是多少?


是通過(guò)單片機(jī)發(fā)送的復(fù)位信號(hào)。CH446和單片機(jī)都是5V供電


試了一下,連續(xù)送3次(復(fù)位、切換)才能夠正常切換過(guò)來(lái)。是時(shí)序的問(wèn)題嗎?


這個(gè)更像是延時(shí)的時(shí)間不足導(dǎo)致的。


-----------------下面的代碼,是技術(shù)支持給的。 ---------------------------------- #include "reg52.h" #include "intrins.h"

sbit CH446_DAT =P1^0; sbit CH446_CK =P1^1; sbit CH446_STB =P1^2; sbit CH446_RST =P1^3;

typedef unsigned char UINT8; typedef unsigned short UINT16;

#define NOP { _nop_();_nop_();}

void Control_Switch_State( UINT8 Address,UINT8 State ) { UINT8 ByteCnt;

CH446_STB =0; CH446_DAT = 0; NOP; NOP; for( ByteCnt=0; ByteCnt<7; ByteCnt++ ) { CH446_CK =0; NOP; if( Address & 0x80 ) { CH446_DAT = 1; } else { CH446_DAT = 0; } CH446_CK =1; NOP; NOP; NOP; NOP; NOP; Address <<=1; } CH446_CK =0; if( State == 1 ) { CH446_DAT =1; } else { CH446_DAT =0; } NOP; NOP; NOP; NOP; CH446_STB =1; NOP; NOP; CH446_STB =0; NOP; NOP; }

void main( void ) { CH446_RST =1; CH446_RST =1; CH446_RST =1; NOP; NOP; NOP; NOP; NOP; NOP; CH446_RST =0; CH446_RST =0; Control_Switch_State( 0x00,1);/* Y0,X0導(dǎo)通 */ Control_Switch_State( 0x22,1);/* Y1,X1導(dǎo)通 */ while(1); } //----------------------------------------------------------------------------- 我用的是宏晶的STC單片機(jī),30M晶振,代碼與上面一樣,同時(shí)由于STC單片機(jī)比51快,將延時(shí)函數(shù): #define NOP { _nop_();_nop_();} 改為了 #define NOP { _nop_();_nop_();_nop_();_nop_();_nop_();}

但是,仍然出現(xiàn)上面的情況,很多情況下,連續(xù)發(fā)三次(復(fù)位、切換)才可正常,有時(shí)發(fā)1次能正常。


在復(fù)位之后加50MS的延時(shí)在切換。 CH446_RST =0; CH446_RST =0; DELAYMS(50); Control_Switch_State( 0x00,1);/* Y0,X0導(dǎo)通 */ Control_Switch_State( 0x22,1);/* Y1,X1導(dǎo)通 */


加了50m延時(shí),問(wèn)題依舊。沒(méi)效果。


另外: CH446手冊(cè)上說(shuō):-------------------------------------------------------------------------- 由于模擬電路與數(shù)字電路共用VDD,為減少干擾,VDD和VEE引腳必須外接退耦電容,并且建議 將數(shù)字輸入信號(hào)的邊沿適當(dāng)放緩,降低傳輸頻率。另外,對(duì)于強(qiáng)干擾的應(yīng)用環(huán)境,單片機(jī)可以每隔數(shù) 秒定期對(duì)CH446進(jìn)行刷新,確保各個(gè)模擬開關(guān)處于正確的開關(guān)狀態(tài)。 ---------------------------------------------------------------------------------------- 那就是說(shuō):我用CH446切換后,還要定期刷新啊,那豈不是太不可靠了。


我也是按照這個(gè)代碼移植到用pic驅(qū)動(dòng),我想問(wèn)的是不用初始化ch446的嗎?直接這樣我是發(fā)現(xiàn)沒(méi)任何反應(yīng)的,然后整個(gè)社區(qū)我都翻了一遍都沒(méi)有例程……不知道怎么用的


樓上的朋友,不知道您芯片的電路連接是否有問(wèn)題,可以直接來(lái)電確認(rèn)一下025-52632854


#include?

#define?RST?4
#define?STB?19
#define?SK??18
#define?DAT?23

#define?LED?5

//CH446Q初始化
void?CH446Q_Init(){
pinMode(STB,OUTPUT);
pinMode(DAT,OUTPUT);
pinMode(SK,OUTPUT);
pinMode(RST,OUTPUT);
digitalWrite(RST,1);
delay(50);
digitalWrite(RST,0);
}

//發(fā)送地址和狀態(tài)
void?CH446Q_SendAddr_Switch(uint8_t?addr,bool?data){
uint8_t?ByteCnt;

digitalWrite(STB,0);
digitalWrite(DAT,0);

delay(20);

for(ByteCnt=0;ByteCnt<8;ByteCnt++){
digitalWrite(SK,0);
delay(10);

if(addr?&?0x80){
digitalWrite(DAT,1);
}else{
digitalWrite(DAT,0);
}
digitalWrite(SK,1);
delay(50);
addr?<<=1;
}

digitalWrite(SK,0);

if(data?==?1){
digitalWrite(DAT,1);
}else{
digitalWrite(DAT,0);
}

delay(40);
digitalWrite(STB,1);
delay(20);
digitalWrite(STB,0);
delay(20);
}

void?setup()?{
CH446Q_Init();
CH446Q_SendAddr_Switch(0x01,1);?//Y0-X1連接
CH446Q_SendAddr_Switch(0x7F,1);?//Y7-X15連接
pinMode(LED,OUTPUT);
}

void?loop()?{
digitalWrite(LED,1);
delay(1000);
digitalWrite(LED,0);
delay(1000);
}

ESP32-CH446Q.jpgESP32-CH446Q測(cè)試.jpg測(cè)試成功?。?!


CH446X 供電7.6v,芯片發(fā)燙,怎么處理? 供電5V,就正常了。


電源電壓應(yīng)該滿足兩個(gè)條件:VDD>GND>=VEE 和 VDD>GND+4V,推薦以下組合:

image.png





只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频