WK系列串口扩展芯片详解(含电路例程)

本文介绍了如何使用成都为开微电子的WK2132芯片来扩展单片机的串口,该芯片通过IIC接口连接,每个串口配备256级FIFO。文中提供了电路图、模块设计以及相应的C语言驱动代码,展示如何配置I2C接口并进行数据收发操作。
摘要由CSDN通过智能技术生成

 很多单片机,比如51单片机,只有一个或两个串口。所以,有时会遇到串口不够用的情况,这时候可以换一款串口更多的单片机。而有时你又不想换一款单片机,那可以使用本文要介绍的通过IIC来扩展串口的芯片。
 成都为开微电子,在串口扩展芯片上有很多选择,有2个串口、4个串口等。本文以2串口的WK2132为例进行介绍。二话不说,先上简介。

在这里插入图片描述
 WK串口芯片的特色,在于每个串口有256级FIFO,这可以节省你的单片机的RAM,同时,不容易因为没读取WK接收缓冲里的数据而使缓冲区溢出。
 在我的串口扩展模块中,使用IIC来操作WK,它的好处是有应答信号,可以知道WK芯片是否正常工作。上电路图

在这里插入图片描述
 SCL、SDA接到单片机就可以了,IRQ是中断信号,可不接,单片机采用查询方式来检测是否有接收到数据。R7~R10用来选择IIC地址,这样可以用同一个IIC线最多接4个扩展模块,8个串口。
 我的模块中,还可以选择TTL输出还是232输出。

在这里插入图片描述
 现在来上代码

main()
{
   
	//P1.6為IIC SDA引腳,配置成開漏,輸出高電平
	//P1.7為IIC SCL引腳,配置成開漏,輸出高電平
	P1M0 |= (1<<6) | (1<<7);
	P1M1 |= (1<<6) | (1<<7);
	P1 |= (1<<6) | (1<<7);
	
	WK21xx_Init();
	
	while(1)
	{
   
		//测试自收自发
		WK21xx_UARTxRcv(0, a, &RcvNum);
		if (RcvNum)
		{
   
			WK21xx_UARTxSend(0, a, RcvNum);
		}
		
		WK21xx_UARTxRcv(1, a, &RcvNum);
		if (RcvNum)
		{
   
			WK21xx_UARTxSend(1, a, RcvNum);
		}
	}
}

 先配置一下I2C的IO口,然后调用一下WK21xx_Init(),接下来就可以用WK21xx_UARTxRcv读取接收缓存里的数据,以及用WK21xx_UARTxSendByte和WK21xx_UARTxSend发送数据了。

 WK的驱动如下

/*********************************************************************************************************
** Func:    WK21xx串口初始化
** Input:   UARTx: 串口号, 0~15
** Return:   成功返回1,失败返回0
** Remarks: WK21xx串口初始化
*********************************************************************************************************/
unsigned 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值