关于GD32F190R8的模拟信号采集与显示装置设计的分析和应用
2024-11-15 来源:elecfans
1方案介绍
在GD32F190系列MCU的内部配有12位精度采样率高达2M SPS的12位高速ADC,可对外部16个模拟输入通道进行模拟信号采集。利用该性能,可以较好地对各种模拟信号量处理。
为了能使开发者较好地掌握对ADC的使用,在推出的相关资源中,有对应的例程可参考使用。在应用中,开发者也需配置第三方的器件,使得设计的功能更加便于使用。这里就介绍一种以OLED为显示器件对模拟信号进行显示输出的方案。
在本方案中,所用的显示屏为双色的0.96’OLED,其上部的1/3为黄色,另2/3为蓝色。为了便于功能的扩展,在程序设计过程中,保留了开发板所具备的虚拟串口通讯功能。这样既可以通过串行通讯来同上位机构成数据采集分析系统,也可以通过外挂相应的通信模块来实现无线通讯或WiFi通讯,从而融入互联网的行列中。当然,核心的功能则是射频和串口之间的透传。
2方案框图
3设计应用描述及心得总结
在设计中,对显示器件的选择是有一定特色的,它虽与同档次LCD5110液晶屏在功能上十分相近,但它的特色却极为抢眼。
首先,在外形上它更为迷你,是穿戴设备的理想选择对象。在工作机制上,LCD5110是依赖背光的投射来看清显示的内容,而OLED则是靠自身的点亮来发光,在色彩方面它也由LCD5110的单一色调,而变为黄、蓝两种醒目的颜色,有效地增强了表现力。
另外,在引脚使用方面它也胜出一筹,LCD110 要占用8个引脚,而OLED则只需4个引脚。在数据传送方面,它是以IIC总线方式。在应用中是由PA7来连接OLED的数据信号,由PA8来连接OLED的时钟信号。其输出高低电平的定义语句如下:
#defineOLED_SCLK_Clr() GPIO_ResetBits(GPIOA,GPIO_PIN_8)//SCL
#defineOLED_SCLK_Set() GPIO_SetBits(GPIOA,GPIO_PIN_8)
#defineOLED_SDIN_Clr() GPIO_ResetBits(GPIOA,GPIO_PIN_7)//SDA
#defineOLED_SDIN_Set() GPIO_SetBits(GPIOA,GPIO_PIN_7)
2个引脚的配语句如下:
GPIO_InitPara GPIO_InitStructure;
RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_PIN_8|GPIO_PIN_7;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
GPIO_InitStructure.GPIO_Speed =GPIO_SPEED_50MHZ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_PIN_8|GPIO_PIN_7);
至于各功能函数直接引用OLED的例程即可,但要注意对数据类型的定义语句稍加调整,如要把u8改为uint8_t 等。
为了便于显示数据及字符信息,在程序中配置了2中整体,及6*8的点阵字符和8*16的点阵字符。
const unsignedchar F6x8[][6] =
{
0x00, 0x00,0x00, 0x00, 0x00, 0x00,// sp
0x00, 0x00,0x00, 0x2f, 0x00, 0x00,// !
}
const unsignedchar F8X16[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,//sp
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,
0x30,0x00,0x00,0x00,//!
}
此外,使用字模提取软件PCtoLCD2002还可自行构建小字库来显示中文,该软件的界面如下图所示。
4作品实物图+视频
实物图如下图所示,在OLED屏上,同时以两种方式来显示采样值,一个以十进制数的方式,另一个是以电压值的方式,于此同时,通过虚拟串口在上位则可将接收的数据绘制成波形图。