【经验】国产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等丰富的资源。
设计经验 发布时间 : 2023-05-18
【经验】芯海科技通用32位MCU有效规避意外掉电的硬件设计方案
本文以芯海科技MCU CS32L010F8U6为例,简述在进行硬件设计的时候如何有效规避因为意外掉电而造成工作异常的方案。在进行硬件电路设计的时候,我们可以在单片机供电引脚上接一个电容到GND以存储电量,防止芯片意外掉电
设计经验 发布时间 : 2022-11-11
【经验】芯海MCU CS32F030C8T6的串口打印乱码问题
芯海CS32F030C8T6的串口问题有客户在使用芯海的CS32F030C8T6 MCU的时候遇到如下问题:1、使用9600波特率无奇偶校验,刚上电的时候串口会发一些乱码出来。乱码打印等问题,本文提供解决方案。
设计经验 发布时间 : 2022-12-08
Top Chinese 8/32-bit MCU Manufacturers with ARM Cortex-M0, M0+, M3, M4 and Stable Supply
In the face of rising semiconductor raw material prices and a continued shortage of production capacity, Sekorm has joined Civil Technology, Arteli, Chipsea, China Microelectronics, Fudan Microelectronics, Aerospace Shun, and other mainstream MCU manufacturers to provide stable MCU supply guarantees
活动 发布时间 : 2022-06-21
芯海科技(CHIPSEA)电子烟MCU产品介绍
描述- 芯海电子烟产品介绍
型号- CS32 T0,CS3XG,CSS12P82,CS32F031C8,CSU38M20,CSU32P20-MSOP10,CSU32P20,N76XX03,CSMXXX12X2,CS32 T4,CSU8RP3117B,CST92F30,CS32A060,M031C8T6,CS32F072,M031C6T6,CS32F030,CS32F031,CSU32M10,CS32F070,CSU32M11,CS32F071,S031C6,CSU3XF,CSU38M20-QFN24,CSU18M53,CSU38F20,CSU32P10-MSOP10,H03XC8,CXXX9F12X2,CSU8RP3215,CSU8RP3216,CS32 A0,CSU32M10-MSOP10,CSU3XP,CSU1XM,M031C88,CSU3XM,CS32 F0,S031C6T6,TM5XXX28,CS32F031K8U6,CSU38F20-QFN20,CS32F031G6U6,CSU9XT,CS32F031K6U6,CSU8RP3115B,H031C6T6,H031C8T6,CS32G023,TMXXXA28,CSU8RP3119B,CS32G020,CS32G021,CSS34P16,CSU32P10,S030C8,CS32 G0,CSP32F2X,CSU32M12-DFN14,CSU8RP311B,CS32 G4,NXXX003,CSU32M10-QFN16
【应用】芯海8位MCU CSU32M10-SOP16助力电子烟设计,具有5μs响应快速可靠、集成度高优势
电子烟主控选择方面客户比较在意能否提供完善的一套方案,这样也可以节省开发时间,实现量产,推荐芯海8位MCU CSU32M10-SOP16方案,集成度高、能够有效节省PCB空间,还有硬件短路保护、恒功率控制、不断电烧录等特点。
应用方案 发布时间 : 2023-03-22
芯海科技CS32F061:集成12位DAC高性价比信号链MCU,具有丰富的模拟特性,满足高精度需要
芯海科技32位通用MCU系列全新推出集成12位DAC的高性价比信号链MCU芯片CS32F061。这款MCU具备丰富的模拟特性,内置可编程逻辑单元,可简化硬件设计,是高精度数据处理及灵活信号链设计的嵌入式系统的理想选择,在电动工具、电源管理、工业控制及通信等领域拥有广泛应用前景。
产品 发布时间 : 2024-08-13
【技术大神】如何选择一款合适的MCU驱动段码液晶屏
本文作者基于自己的实际经验,分享一种驱动段码屏的简易方法,可大幅降低成本。
器件选型 发布时间 : 2016-06-27
【应用】芯海MCU CS32L010F8U6用于电子烟,封装为QFN20(3mm*3mm),运行频率24MHz
芯海的MCU CS32L010F8U6在电子烟中的应用,它是一款内嵌 32 位 ARM® Cortex®-M0 内核的超低功耗微控制器,最高可运行在24MHz,内置 64K 字节的嵌入式 Flash,4K 字节的 SRAM,具有高整合度、高抗干扰、高可靠性及高性价比等优势。
应用方案 发布时间 : 2023-03-29
芯海通用 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
芯海通用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
|
选型表 - 芯海 立即选型
【应用】功耗低至5.6μA的32位MCU CS32F030C8T6用于激光测距仪,宽压供电电压2~5.5V
激光测距仪主要由MCU控制器、激光发射部分、激光接收部分、屏幕显示部分、按键驱动部分以及电源模块等组成。MCU的部分本文推荐使用芯海科技的32位MCU CS32F030C8T6,功耗可低至5.6μA,可以很好地满足电池供电系统对MCU的要求。
应用方案 发布时间 : 2021-12-25
芯海科技亮相AutoSEMI 2024:“模拟信号链+MCU”赋能汽车电子创新
2024年5月23日,业界瞩目的“The 2nd AutoSEMI 2024智能汽车数字芯片大会”在上海盛大举行。芯海科技汽车电子产品线总经理董鹏受邀作为特邀嘉宾,发表了《模拟信号线+MCU 赋能汽车电子创新》的主题演讲,详细阐述了公司车规级系列产品进展及未来规划。
原厂动态 发布时间 : 2024-05-26
【IC】芯海科技CS8M320经济型信号链MCU,集成12位全差分ADC,宽工作电压1.8~5.5V
芯海科技全新推出CS8M320系列的经济型信号链MCU 。该MCU集成了12位全差分ADC、低温漂基准、电容测量模块CVC等信号链模块,精准满足常规的电压、电流、温度、电容信号测量需要 。
产品 发布时间 : 2023-12-28
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论