8x16 模拟开关阵列芯片 CH446Q

xiso303 2023-12-23 22:09:17

        本人最近在准备电赛模块,想要做一个程控滤波器模块(还未做出,后续做好后应该也会发帖)。因为我用的是程控滤波芯片MAX264,既可以单电源供电又可以双电源。但单电源供电会有限制,所以打算使用双电源供电。这样就遇到了一个问题,双电源供电后几个控制滤波器参数的引脚的高低电平变成了VCC和VEE,即低电平不是0V,而是变成了负供电电压-5V。而单片机无法产生负电压,也就不能对滤波器进行控制。所以我想到了使用模拟开关,单片机控制模拟开关进而控制MAX264参数引脚。而我需要的模拟开关数量又较多,所以就使用了今天要讨论的芯片:8x16 模拟开关阵列芯片  CH446Q。

一、概述

        CH446Q 是 8x16 矩阵模拟开关芯片。CH446Q 包含 128 只模拟开关,分布于8x16 信号通道矩阵的各个交叉点,每只模拟开关都可以独立的开启或者关闭,从而实现 8x16 信号通道的任意路由。

 二、主要特点

1、CH446Q 内置 128只独立的模拟开关,分布于 8x16 信号通道矩阵的各个交叉点。

2、CH446Q 支持 7 位并行地址输入,兼容现有同类产品。

3、支持串行地址移位输入,节约引脚。

4、支持 4V 到 12V 单电源电压,支持+5V 和 -7V 双电源电压。

三、引脚

 四、功能说明

        参考上述的框图,CH446Q芯片内部分为三个部分:接口控制逻辑、128只锁存器、128只模拟开关阵列。其中的接口控制逻辑还包含了串行地址到并行地址转化。

        128只模拟开关分布于由16个X端口和8个Y端口组成的8x16矩阵的每个交叉点,使得任意一个X端口和任意一个Y端口之间能够在需要时导通或者断开,甚至可以使某两个X端口分别导通到某个Y 端口,实现任意两个X端口之间或者任意两个Y端口之间的间接导通。

        128只锁存器用于分别控制128只模拟开关的导通或者断开,128只锁存器被编址为0到127,由7位地址 ADDR6~ADDR0译码后选择。从RST引脚输入高电平复位信号可以将所有锁存器清0,从而导致所有模拟开关断开。需要开启或者关闭某一模拟开关时,应该通过7位的 ADDR提供锁存器的地址,并通过DAT提供开关数据〈1则导通,0则关闭),然后产生一个ACT激活脉冲,将开关数据写入由ADDR译码指定的锁存器,实现对指定的某个模拟开关的控制。

        接口控制逻辑主要用于产生 ADDR地址和ACT激活脉冲。在并行地址输入方式下,由引脚AX0~AX3、AY0~AY2从低到高构成7位地址输入ADDR0~ADDR6,当CS/CK引脚输入的片选信号为高电平时,由STB引脚输入的高电平选通脉冲产生ACT激活脉冲,当CS/CK引脚为低电平时,不产生 ACT信号。在串行地址输入方式下,由CS/CK引脚输入时钟,在其每个上升沿,从 DAT引脚依次输入ADDR6、ADDR5直到 ADDR1、ADDR0(分别对应于AY2、AY1直到 AX1、AX0),CS/CK引脚需要提供7个上升沿得到7位地址,并由STB引脚输入的高电平选通脉冲直接产生ACT激活脉冲。

        实际上,在并行地址输入方式下,ACT信号是CS/CK引脚输入和STB引脚输入的“与”,而在串行地址输入方式下,ACT信号只是来自STB引脚的输入。RST复位信号优先于ACT信号,当RST输入高电平时,ACT信号将被忽略,所有锁存器总是被清0。在ACT激活脉冲有效期间,DAT引脚可以动态改变输入的开关数据,并使得相应的模拟开关实时地导通或者关闭,但是在ACT信号结束之前(即STB的下降沿之前),DAT引脚的输入数据应该保持稳定以便正确地锁存数据。

五、并行地址输入

          单片机7个引脚依次连接到7位输入地址ADDR0~ADDR6,给入脉冲并行输入地址。

  下表为CH446Q 芯片 7 位地址 ADDR 的译码真值表,也是 128 只模拟开关的编址表。

 

六、串行地址输入

        串行输入能大量的节省单片机的引脚资源,我这次采用的就是串行输入方式。

        串行地址输入方式下的控制步骤:通过 DAT 引脚依次提供 7 位地址并用 CS/CK 引脚的 7 个上升沿移入 CH446,通过 DAT 引脚提供数据、向 STB 引脚提供一个高电平脉冲。

  如果单片机通过 SPI 总线连接 CH446X,那么 SPI 提供的一字节 8 位数据的位 7 将被 CH446 丢弃,SPI 的位 6 到位 0 作为地址,单片机 SPI 的串行数据输出引脚连接 DAT 引脚提供开关数据,单片机使用一个独立引脚控制 CH446 的 STB 引脚。

       下图为一个串行地址输入的实例,控制 24H 地址(Y2 和 X4 之间)的模拟开关,先开再关。

        在7位地址输入完毕后仍需输入一位以控制该地址开关的状态。

        如果 VEE 接负电压,那么模拟开关可以通过负电压的模拟信号,否则 VEE 接 GND,模拟开关只能通过高于-0.3V 的模拟信号。

  由于模拟电路与数字电路共用 VDD,为减少干扰,VDD 和 VEE 引脚必须外接退耦电容,并且建议将数字输入信号的边沿适当放缓,降低传输频率。另外,对于强干扰的应用环境,单片机可以每隔数秒定期对 CH446 进行刷新,确保各个模拟开关处于正确的开关状态。

  图为CH446Q电路

 

七、单片机程序

/* **************************************************
//  函数功能:延时ms函数
//  参数:

************************************************** */
void delay_ms(u16 ms)       
{
	u16 i,j;
	
	for(i=0;i<ms;i++)
	 for(j=0;j<12;j++);
}

/* **************************************************
//  函数功能:CH466Q模拟开关复位,所有通道关闭
//  参数:

************************************************** */

void Control_Switch_Reset(void)
{
	CH446Q_RST = 1;
	delay_ms(1);
	CH446Q_RST = 0;
}


/* **************************************************
//  函数功能:CH466Q模拟开关通道选择导通
//  参数: Address:选择的开关地址
//		   State: 为1,该开关导通
//				  为0,该开关关闭

************************************************** */

void Control_Switch_State(u8 Address,u8 State)
{
	u8 ByteCnt;
  
	CH446Q_STB = 0;
	CH446Q_DAT = 0;
	delay_ms(1);
	for(ByteCnt = 0;ByteCnt < 7;ByteCnt++)
	{
		CH446Q_CLK = 0;
		if(Address & 0x40) 
		{
			CH446Q_DAT = 1;
		}
		else 
		{
			CH446Q_DAT = 0;
		}
		CH446Q_CLK = 1;
		Address <<= 1;
	}
	CH446Q_CLK = 0;
  if(State == 1)
	{
		CH446Q_DAT = 1;
	}
	else
	{
		CH446Q_DAT = 0;
	}
	CH446Q_STB = 1;
	delay_ms(1);
	CH446Q_STB = 0;
}

void main(void)
{
	Control_Switch_Reset();
	
	Control_Switch_State(0x00, 1);  //Y0,X0导通
	Control_Switch_State(0x01, 1);  //Y0,X1导通
	while(1)
	{
		
	}
}

八、结束语

  以上只是我对于这几天的学习的一个总结。本人也是一名学生,学识浅薄,上述如有错误,大家可以直接在评论区提出来,共同进步。

...全文
1259 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,040

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧