沁恒八串口扩展芯片CH438详解(含电路例程)

本文介绍了沁恒的CH438芯片,这是一款能为单片机提供8个串口扩展的解决方案。该芯片拥有128字节FIFO缓冲区,有助于减少单片机RAM的占用,并防止数据溢出。通过并行口进行访问,外围电路简洁,只需一个晶振。文中给出了电路图和C语言驱动代码,帮助开发者进行实际应用。
摘要由CSDN通过智能技术生成

 很多单片机,比如51单片机,只有一个或两个串口。所以,有时会遇到串口不够用的情况,这时候可以换一款串口更多的单片机。而有时你又不想换一款单片机,那可以使用本文要介绍的八扩展串口芯片CH438。芯片是沁恒的,沁恒的芯片用了挺多,很有特色,质量也是很棒的。二话不说,先上简介。

在这里插入图片描述
在这里插入图片描述

 CH438芯片的特色,在于单芯片有8个扩展串口,每个串口有128字节的FIFO,这可以节省你的单片机的RAM,同时,不容易因为没读取接收缓冲里的数据而使缓冲区溢出。CH438的访问接口是并行口,用的引脚比较多,数据脚和地址脚可共用。外围简单,只需要一个晶振。上电路图

在这里插入图片描述


 现在来上代码

int main(void)
{
   
	uint8_t UARTx;
	
	InitSysClk();                  //Initial system clock
	InitSysTick();                 //Initial sysTick timer, interrupt once per millisecond
	PortConfig();                  //IO Port configure, please modify this function to configure the IO port
	
	CH438_PinInit();
	for (UARTx=0; UARTx<16; UARTx++)
	{
   
		CH438_UARTxInit(UARTx);
	}

	while (1)
	{
     
		CH438SerialsProcess();
	}
}

/*********************************************************************************************************
  CH438 串口处理
*********************************************************************************************************/
void CH438SerialsProcess(void)
{
   
	uint8_t UARTx;
	uint8_t res;
	
	for (UARTx=0; UARTx<16; UARTx++)
	{
   
		res = CH438_UARTxRcv(UARTx, CH438UARTRcvBuf, &CH438UARTRcvLen);
		if (res == 0)      //Hardware error
		{
   
			break;
		}
		if (CH438UARTRcvLen)
		{
   
			CH438_UARTxSend(UARTx, CH438UARTRcvBuf, CH438UARTRcvLen);
		}
	}
	
}

 初始化时先调用CH438_PinInit()配置一下并口的IO口,然后调用一下CH438_UARTxInit(UARTx)配置各个串口,接下来就可以用CH438_UARTxRcv读取接收缓存里的数据,以及用CH438_UARTxSendByte和CH438_UARTxSend发送数据了。

 CH438的驱动如下

/*********************************************************************************************************
** 功能: CH438引脚初始化
** 输入: 无
** 返回: 无
** 说明: CH438引脚初始化
*********************************************************************************************************/
void CH438_PinInit()
{
   
	CH438_CSHigh();
	CH438_ALELow();
	CH438_WRHigh();
	CH438_RDHigh();	
}

/*********************************************************************************************************
** 功能: CH438写寄存器
** 输入: Addr:寄存器地址
** 输入: RegValue:寄存器值
** 返回: 
  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值