【经验】国产MCU CS32F030驱动彩色LCD显示屏YB-TG240320C325B-N-A0的硬软件设计
芯海科技CS32F030是一款32bit cortex-M0内核的国产MCU,YB-TG240320C325B-N-A0是亿都设计的基于驱动芯片ST7789V2的320x240彩色LCD显示屏,本文介绍CS32驱动液晶屏相关的硬件连接和软件驱动。
1.硬件连接:
连接采用SPI通信,除了基础的SPI接口,需要额外注意:
RESET引脚要连接,在初始化之前需要reset清除相关显示。
RS引脚非常重要,在配置和初始化时,需要采用命令的方式,在进行图案和字母传输的时候,需要采用数据的方式。
注意LCS_A的背光电压和电流,建议使用3.3V。
2.软件驱动
#define FONT_W 32
#define FONT_H 32
#define PIC_WIDTH 160 //预备向LCD显示区域填充的图片的大小
#define PIC_HEIGHT 160
#define RED 0xF800 //定义颜色常量
#define GREEN 0x07E0
#define BLUE 0x001F
#define WHITE 0xFFFF
#define BLACK 0x0000
#define GRAY 0xEF5D //0x2410
#define GRAY75 0x39E7
#define GRAY50 0x7BEF
#define GRAY25 0xADB5
// LCD SPI2 GPIO config
gpio_mode_set(GPIOB, GPIO_PIN_10, GPIO_MODE_OUT_PP(GPIO_SPEED_HIGH));//CS
gpio_mode_set(GPIOB, GPIO_PIN_13, GPIO_MODE_OUT_PP(GPIO_SPEED_HIGH));//sclk
gpio_mode_set(GPIOB, GPIO_PIN_14, GPIO_MODE_OUT_PP(GPIO_SPEED_HIGH));//SPI_A0 WR/D
gpio_mode_set(GPIOB, GPIO_PIN_15, GPIO_MODE_OUT_PP(GPIO_SPEED_HIGH));//mosi
gpio_mode_set(GPIOA, GPIO_PIN_12, GPIO_MODE_OUT_PP(GPIO_SPEED_HIGH));//RESET
#define LCD_RST(n) (n ? __GPIO_PIN_SET(GPIOA, GPIO_PIN_12) : __GPIO_PIN_RESET(GPIOA, GPIO_PIN_12))
#define LCD_WR(n) (n ? __GPIO_PIN_SET(GPIOB, GPIO_PIN_14) : __GPIO_PIN_RESET(GPIOB, GPIO_PIN_14))
#define LCD_CS(n) (n ? __GPIO_PIN_SET(GPIOB, GPIO_PIN_10) : __GPIO_PIN_RESET(GPIOB, GPIO_PIN_10))
#define LCD_SDA(n) (n ? __GPIO_PIN_SET(GPIOB, GPIO_PIN_15) : __GPIO_PIN_RESET(GPIOB, GPIO_PIN_15))
#define LCD_SCK(n) (n ? __GPIO_PIN_SET(GPIOB, GPIO_PIN_13) : __GPIO_PIN_RESET(GPIOB, GPIO_PIN_13))
驱动初始化:
void SendDataSPI(unsigned char dat)
{
//__SPI_8BITS_DATA_SEND(SPI2, dat);
#if 1
unsigned char i;
for(i = 0; i < 8; i++)
{
LCD_SCK(0);
if(dat & 0x80)
{
LCD_SDA(1);
// delay_us(1);
}
else
{
LCD_SDA(0);
// delay_us(1);
}
LCD_SCK(1);
// delay_us(1);
dat <<= 1;
}
#endif
}
void WriteComm(unsigned int i)
{
LCD_CS(0);
LCD_WR(0);
SendDataSPI(i);
LCD_CS(1);
}
void WriteData(unsigned int i)
{
LCD_CS(0);
LCD_WR(1);
SendDataSPI(i);
LCD_CS(0);
}
void WriteDispData(unsigned char DataH,unsigned char DataL)
{
//CS0=0;
SendDataSPI(DataH);
SendDataSPI(DataL);
//CS0=1;
}
void LCD_Init(void)
{
LCD_RST(1);
delay_ms(200);
LCD_RST(0);
delay_ms(300);
LCD_RST(1);
delay_ms(200);
WriteComm(0x11);
delay_ms(480);
//boe2.8ips+st7789v2
WriteComm(0x36);
WriteData(0x00);
WriteComm(0x3A);
WriteData(0x55); //
WriteComm(0xB2);
WriteData(0x0C);
WriteData(0x0C);
WriteData(0x00);
WriteData(0x33);
WriteData(0x33);
WriteComm(0xB7);
WriteData(0x75); //VGH=14.97V, VGL=-10.43V
WriteComm(0xBB); //VCOM
WriteData(0x2B);
WriteComm(0xC0);
WriteData(0x2C);
WriteComm(0xC2);
WriteData(0x01);
WriteComm(0xC3); //GVDD
WriteData(0x0B);
WriteComm(0xC4);
WriteData(0x20);
WriteComm(0xC6);
WriteData(0x0F);
WriteComm(0xD0);
WriteData(0xA4);
WriteData(0xA1);
WriteComm(0xE0);
WriteData(0xD0);
WriteData(0x01);
WriteData(0x04);
WriteData(0x09);
WriteData(0x0B);
WriteData(0x07);
WriteData(0x2E);
WriteData(0x44);
WriteData(0x43);
WriteData(0x0B);
WriteData(0x16);
WriteData(0x15);
WriteData(0x17);
WriteData(0x1D);
WriteComm(0xE1);
WriteData(0xD0);
WriteData(0x01);
WriteData(0x05);
WriteData(0x0A);
WriteData(0x0B);
WriteData(0x08);
WriteData(0x2F);
WriteData(0x44);
WriteData(0x41);
WriteData(0x0A);
WriteData(0x15);
WriteData(0x14);
WriteData(0x19);
WriteData(0x1D);
WriteComm(0x29);
}
void ExitSLP(void)
{
//FOR OTM3225A
//Power On sequence
WriteComm(0x0010);WriteData(0x0080); // SAP, BT[3:0], AP, DSTB, SLP
WriteComm(0x0011);WriteData(0x0000); // DC1[2:0], DC0[2:0], VC[2:0]
WriteComm(0x0012);WriteData(0x0000); // VREG1OUT voltage
WriteComm(0x0013);WriteData(0x0000); // VDV[4:0] for VCOM amplitude
delay_ms(200); // Dis-charge capacitor power voltage
WriteComm(0x0010);WriteData(0x1490); // SAP, BT[3:0], AP, DSTB, SLP, STB
WriteComm(0x0011);WriteData(0x0227); // R11h=0x0221 at VCI=3.3V DC1[2:0], DC0[2:0], VC[2:0]
delay_ms(50); // Delay 50ms
WriteComm(0x0012);WriteData(0x009B); // External reference voltage =Vci;
delay_ms(50); // Delay 50ms
WriteComm(0x0013);WriteData(0x1800); // R13h=0x1200 when R12=009D VDV[4:0] for VCOM amplitude
WriteComm(0x0029);WriteData(0x0027); // R29h=0x000C when R12=009D VCM[5:0] for VCOMH
delay_ms(50); // Delay 50ms
WriteComm(0x0007);WriteData(0x0133); // 262K color and display ON
}
void DispColor(unsigned int color)
{
unsigned int i,j;
BlockWrite(0,COL-1,0,ROW-1);
LCD_CS(0);
LCD_WR(1);
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{ SendDataSPI(color>>8);
SendDataSPI(color);}
}
LCD_CS(1);
}
在初始化完成之后,主函数调用驱动:
LCD_Init();
ExitSLP();
DispColor(WHITE);
然后就可以进行数据显示了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由蜡笔小芯提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关研发服务和供应服务
相关推荐
【经验】在keil中添加芯海MCU CS32A010K8V7的支持包
本文将介绍在keil中添加芯海MCU CS32A010K8V7的支持包,芯海科技推出的CS32A010K8V7是一款32Pin脚的ARM 32位构架Cortex-M0核的MCU,内置64K Flash,1路SPI、2路USART支持FIFO等丰富的资源。
【经验】芯海科技通用32位MCU有效规避意外掉电的硬件设计方案
本文以芯海科技MCU CS32L010F8U6为例,简述在进行硬件设计的时候如何有效规避因为意外掉电而造成工作异常的方案。在进行硬件电路设计的时候,我们可以在单片机供电引脚上接一个电容到GND以存储电量,防止芯片意外掉电
【经验】芯海MCU CS32F030C8T6的串口打印乱码问题
芯海CS32F030C8T6的串口问题有客户在使用芯海的CS32F030C8T6 MCU的时候遇到如下问题:1、使用9600波特率无奇偶校验,刚上电的时候串口会发一些乱码出来。乱码打印等问题,本文提供解决方案。
芯海科技(CHIPSEA)MCU产品介绍
描述- 芯海科技专注于混合信号集成电路设计,是国内信号链MCU的领先企业。公司成立于2003年,总部位于深圳,拥有合肥、西安研发中心。产品涵盖高精度ADC、高性能MCU、测量算法及物联网一站式解决方案,广泛应用于智慧健康、压力触控、智能家居感知、工业测量等领域。公司研发人员占比62%,拥有超过400项全球专利,其中授权专利超过100件。
型号- CS32GSTAR,031C8T6,CS32F03X,030K6T6,CS32F031C8,CSU38M20,CSA37F61,CSU32P20,CS32F031G6,CS32F031K8,CSE7759,CSE7758,CSU18M63,N76XX03,CSMXXX12X2,031K8U6,031G6U6,031K6U6,CST92F30,CS32F036,CSU8RP3117B,CS32A060,CSU8RP321X,T220TWS,CSU8RP1001,IQ00 PRO,CS32F030,CS32F031,CS1243,CSU18M88,CS7730,CSU32M10,CSU32M11,CS32G020E8U6,CS1242,CSU38F20,CSU18M53,CS32M10,IQ00,CSE7761,CXXX9F12X2,CS32F030C8,CSS21P10-DFN8,CS32G02X,CSU8RP3215,CSU8RP3216,CSS21P10-DFN6,CS1237,CS1239,CS1238,CS1233,CSS31P12,HA-A10T,CS1232,CSS31P13,CS32F030G6,CSS32P21,CS1231,CS32F031G8U6,CSU18M86,030F6P6,CSU32M1X,TM5XXX28,CS1270,CST92P1X,CSU8RP311X,CS32A0,CSU8RP3115B,N76E003,CSU8RP3119B,TMXXXA28,CS125X,CS32G020,030G6U6,CS32G021,CSU18M9X,CSS34P16,CSU18M65,CSU32P10,CS32F030F6,030C8T6,NEX 3S,CSU39F10,NEX3,NXXX003,CSE7759B,S030,CS32A039,CS32G020K8U6
CS32F03x IAP 升级 芯海通用 MCU 应用笔记
描述- 本技术文档提供基于UART的CS32F03x MCU IAP升级方案,包括参考代码和PC端升级工具。文档详细介绍了硬件配置、代码实现、IAP上位机测试过程,并提供了用户程序示例。
型号- CS32F036,CS32F03RA,CS32F03X,CS32F035,CS32F030,CS32F031
【应用】芯海MCU CS32L010F8U6用于电子烟,封装为QFN20(3mm*3mm),运行频率24MHz
芯海的MCU CS32L010F8U6在电子烟中的应用,它是一款内嵌 32 位 ARM® Cortex®-M0 内核的超低功耗微控制器,最高可运行在24MHz,内置 64K 字节的嵌入式 Flash,4K 字节的 SRAM,具有高整合度、高抗干扰、高可靠性及高性价比等优势。
【技术大神】如何选择一款合适的MCU驱动段码液晶屏
本文作者基于自己的实际经验,分享一种驱动段码屏的简易方法,可大幅降低成本。
芯海科技CS32F061:集成12位DAC高性价比信号链MCU,具有丰富的模拟特性,满足高精度需要
芯海科技32位通用MCU系列全新推出集成12位DAC的高性价比信号链MCU芯片CS32F061。这款MCU具备丰富的模拟特性,内置可编程逻辑单元,可简化硬件设计,是高精度数据处理及灵活信号链设计的嵌入式系统的理想选择,在电动工具、电源管理、工业控制及通信等领域拥有广泛应用前景。
芯海32位MCU选型表
芯海32位MCU选型表包括常规32位MCU、32位低功耗MCU、32位车规MCU。该选型表的Core包括M0和M3两种,内含型号是芯海科技基于Arm® Cortex®-M内核、高可靠性的32位通用微控制器。 包括多款产品,内嵌Flash存储器,集成高性能ADC、丰富的模拟外设、适用于工业控制的高级定时器和通信接口,满足工业应用的质量和可靠性标准,被广泛用于工业控制、汽车电子、智能家居等领域。
产品型号
|
品类
|
Core
|
Freq.(MHz)
|
Flash(Bytes)
|
SRAM(Bytes)
|
IO
|
Adv.Timer
|
16bit GP Timer
|
SysTick
|
FWDT/WWDT
|
UART
|
SPI
|
I2C
|
12bit ADC Units(ch)
|
Temp.Sensor
|
Operating Temp.(℃)
|
Supply Voltage(V)
|
Package
|
CS32F030F6P6-RA
|
32位MCU
|
M0
|
48MHz
|
32KBytes
|
4KBytes
|
15
|
1
|
5
|
1
|
1/1
|
4
|
1
|
1
|
1(9)
|
Y
|
-40℃~85℃
|
2.0V~5.5V
|
TSSOP20
|
选型表 - 芯海 立即选型
芯海通用MCU选型表
M0内核MCU,CS32F03X系列,M0内核,最高主频48MHZ,Flash最大64K,RAM 8K,工作温度-40℃~105℃;M3内核MCU,CS32F103系列,M3内核,最高主频72MHz,Flash 128K,RAM 128K,工作温度-40℃~105℃。
产品型号
|
品类
|
Core
|
Freq.(MHz)
|
Flash(Bytes)
|
SRAM(Bytes)
|
IO
|
Adv. Timer
|
16bitGP Timer
|
32bitGP Timer
|
SysTick
|
FWDT/WWDT
|
RTC
|
UART
|
SPI
|
I2S
|
I2C
|
USB
|
CAN
|
12bit ADCUnits(ch)
|
Temp.Sensor
|
VBAT
|
Operating Temp.(℃)
|
Supply Voltage (V)
|
Package
|
Pack Type
|
Package Qty.
|
MSL
|
CS32F030F6P6-RA
|
通用MCU
|
M0
|
48
|
32K
|
4K
|
15
|
1
|
5
|
-
|
1
|
1/1
|
-
|
4
|
1
|
-
|
1
|
-
|
-
|
1(9)
|
Temp.Sensor
|
-
|
-40~85
|
2.0~5.5
|
TSSOP20
|
Tube
|
6000
|
3
|
选型表 - 芯海 立即选型
【选型】国产MCU CS32F030替代STM32F030,2~5.5V宽压供电,-40~105℃工作温度范围更广
STM32F030系列是意法半导体最受欢迎的M0处理器MCU之一,最近因为疫情、贸易战等综合因素影响,ST的供货周期无限拉长,价格也水涨船高。国产MCU芯海科技CS32F030系列可以替代STM32F030系列,宽压供电,工作温度范围更广,解决ST缺货涨价问题。
芯海通用 MCU 应用笔记 CS32F03x-RA 系列兼容性和移植指南
型号- CS32F030F6P6,CS32F030F8P7-RA,CS32F031K8U7-RA,CS32F03X 系列,CS32F0,CS32F036K6T7,CS32F031XXX7-RA,CS32F031K8S6-RA,CS32F030XXX7-RA,CS32F031G8U6-RA,CS32F030-RA,CS32F035K6U6,CS32F03X-RA,CS32F030F6P6-RA,CS32F030-RA 系列,CS32F0 系列,CS32F030C8T7-RA,CS32F036 系列,CS32F031K8V6-RA,CS32F03X-RA 系列,CS32F031G6U6,CS32F030 系列,CS32F036,CS32F03XXXX7-RA,CS32F03X,CS32F031K8U6-RA,CS32F030XXX6-RA,CS32F030C8T6,CS32F035,CS32F030,CS32F036K6U7,CS32F031,CS32F030K6T6,CS32F031-RA,CS32F031XXX6-RA,CS32F031G8U7-RA,CS32F031-RA 系列,CS32F0356,CS32F036F6P7,CS32F031K8U6H,CS32F031C8T6,CS32F035 系列,CS32F030C8T6-RA,CS32F031 系列,CS32F03XXXX6-RA
【经验】芯海科技8位OTP MCU CSU32P20-SOP16实际应用和仿真器之间的差别
大家都知道OPT MCU存在一个缺点:不可擦除,也就是说只能编程一次,不能重复烧入程序,所以当我们在开发的时候会使用仿真器进行开发,当程序开发测试完成后,需要使用烧录器将程序烧入芯海科技MCU CSU32P20-SOP16 。
芯海科技推出基于CS32F03X系列MCU产品的平板电脑及其皮套键盘的整体解决方案
芯海科技推出了基于旗下CS32F03X系列MCU产品的平板电脑及其皮套键盘的整体解决方案。基于芯海科技CS32F03X系列MCU的平板电脑皮套键盘整体解决方案,凭借其过硬的技术创新、简洁的连接方式、高效的通信协议以及卓越的可靠性,为平板电脑及配套键盘市场带来更加优质、高效的开发选择。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可定制显示屏的尺寸范围0.96“~15.6”;工作温度范围:-30℃~80℃,分辨率:128*128~1920*1080;亮度:300~1200。
最小起订量: 1000 提交需求>
登录 | 立即注册
提交评论