GD32E230C8T6《调试篇》之 (硬件) IIC通信 + GN1650驱动芯片 + 4位8段数码管显示(未成功)

本文讲述了作者尝试在GD32E230单片机上使用GN1650驱动芯片进行IIC通信,并配合4位8段数码管显示的过程,但未能成功,分析了遇到的问题和解决思路,强调了查阅芯片规格书和理解IIC时序的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GD32E230C8T6《调试篇》之 (硬件) IIC通信 + GN1650驱动芯片 + 4位8段数码管显示(未成功)

前言

芯片型号更换成E230了

GN1650

GN1650是2线串口共阴极8段4位,7*4位键盘扫描并带部分组合按键功能驱动控制专用电路。
内部集成有MCU输入输出控制数字接口、数据锁存器、LED驱动、键盘扫描、辉度调节等电路。本芯片性能稳定、质量可靠、抗干扰能力强,可适应于24小时长期连续工作的应用场合。
通信接口:类IIC,使用了IIC相同的时序,但没有完全遵守IIC的协议,不带从机地址

使用一款新的芯片时,首先就要查看其芯片规格书,以上来自GN1650规格书

在这里插入图片描述
我使用了2、3脚和GD32E23的42、43脚连接,

在这里插入图片描述
GN1650没有TM1650的文档详细,看的还是费劲;
上图的红色字的意思为:要先写入想显示的数据,再开启数码管显示;
在这里插入图片描述
在这里插入图片描述
GN1650就这么多有用信息,对于没有使用过1650的友友真的不友好;
再看TM1650的规格书,看看能不能提供有价值的线索
在这里插入图片描述
所以,GN1650的B7~B0 0100 1000就是系统指令0x48;GN1650的时序和TM1650的时序图差不多,我们参考一下;
可以看出GN1650的一个时序要包含ADDRESS和DATA,不能分开发,我在这里踩过坑;

IIC简介

I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
软件IIC:软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。
硬件IIC:一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器进行

测试工具——逻辑分析仪

除了CLK、GND,找其他通道连接数码管的SCL和SDA,GND接数码管的负极;
在这里插入图片描述

这种有输出波形的实验,还是要借助工具,不然很难知道错在哪;
参照了网上的方法以及GD32e230的例程,用逻辑分析仪还是没有抓到IIC的时序波形 ,所以数码管肯定不会亮;

在这里插入图片描述

代码

#define I2C0_SLAVE_GN1650    0x68 //DIG1
uint8_t i;

/******PA0用作测试脚,每隔50ms输出一次高低电平,对实验没有影响***/
void myGPIO_init(void)
{
   
   
	 /* enable GPIOB clock */
	 rcu_periph_clock_enable(RCU_GPIOA);	
		
	 gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ,GPIO_PIN_0);//  GPIO_OTYPE_PP推挽输出
	 gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_0);	
}


//主函数处理,系统资源管理线程独占阻塞模式
int main(void)
{
   
   
	systick_config();
		
	myGPIO_init();
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值