STM32使用9bit SPI驱动LCD
网上买了块LCD,支持并口和串口,贪便宜没仔细看,结果到手是3线SPI,(没有DC线),手头正好有个STM32F030和L476RG两块板子支持4-16bit长度.
网上找了一圈发现没什么9bitSPI用法的文章,这次就当记个笔记,
硬件:
STM32F030F4P6F开发板
3.5寸LCD
下载器/调试器
硬件连接: 硬件SPI
PA5 ------> SPI1_SCK
PA7 ------> SPI1_MOSI
PA6 ------> RES
PB1 ------> CS
模拟SPI
PA9 ------> SCK
PA10 ------> MOSI
实话说SPI刷屏速度还是太*疼,有条件还是8080吧!
STM32F030手册中关于位长的描述:
SPI配置如下:
static void MX_SPI1_Init(void)
{/* USER CODE BEGIN SPI1_Init 0 *//* USER CODE END SPI1_Init 0 *//* USER CODE BEGIN SPI1_Init 1 *//* USER CODE END SPI1_Init 1 *//* SPI1 parameter configuration*/hspi1.Instance = SPI1;hspi1.Init.Mode = SPI_MODE_MASTER;hspi1.Init.Direction = SPI_DIRECTION_1LINE;hspi1.Init.DataSize = SPI_DATASIZE_9BIT;hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;hspi1.Init.NSS = SPI_NSS_SOFT;hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;hspi1.Init.TIMode = SPI_TIMODE_DISABLE;hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;hspi1.Init.CRCPolynomial = 7;hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;if (HAL_SPI_Init(&hspi1) != HAL_OK){Error_Handler();}/* USER CODE BEGIN SPI1_Init 2 *///__HAL_SPI_ENABLE(&hspi1);/* USER CODE END SPI1_Init 2 */}
命令函数
void WriteComm(unsigned short CMD) //写命令
{LCD_CS_Set();HAL_SPI_Transmit(&hspi1,(unsigned char*)&CMD,1,0xffff);LCD_CS_Clr();//模拟
// LCD_CS_Set();
// SPI_SDA(0);
// SPI_DCLK(0);
// SPI_DCLK(1);
// unsigned char n;
//
// for(n=0; n<8; n++)
// {
// if(CMD&0x80) SPI_SDA(1)
// else SPI_SDA(0)
// CMD<<= 1;
//
// SPI_DCLK(0);
// SPI_DCLK(1);
// }
// LCD_CS_Clr();
}
数据函数
void WriteData(unsigned short dat) //写数据
{uint16_t data = dat|0x0100;LCD_CS_Set();HAL_SPI_Transmit(&hspi1,(unsigned char*)&data,1,0xffff);LCD_CS_Clr();// LCD_CS_Set();
// SPI_SDA(1);
// SPI_DCLK(0);
// SPI_DCLK(1);
// unsigned char n;
//
// for(n=0; n<8; n++)
// {
// if(dat&0x80) SPI_SDA(1)
// else SPI_SDA(0)
// dat<<= 1;
//
// SPI_DCLK(0);
// SPI_DCLK(1);
// }
// LCD_CS_Clr();
}
主函数:
/* USER CODE BEGIN 2 */LCD_Initial(); /* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){Lcd_ColorBox(0,0,480,320,RED); //用红色清屏Lcd_ColorBox(0,0,480,320,GREEN);Lcd_ColorBox(0,0,480,320,BLUE);HAL_Delay(1000);LCD_PutString(0,140,"支持横竖屏",RED,YELLOW,0);LCD_PutString(10,100,"电话:0755-33561760",RED,YELLOW,1);LCD_PutString(10,80,"深圳市好钜润科技有限公司",RED,YELLOW,1);LCD_PutString(10,60,"Welcome to use HJR TK499 and SPI LCD!",RED,YELLOW,1);HAL_Delay(1000);WriteComm(0x36); WriteData(0x08); //切换到竖屏显示//LCD_Fill_Pic(0,0,320,480,gImage_MM_T035);WriteComm(0x36); WriteData(0x28); //切换回横屏显示HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}
STM32使用9bit SPI驱动LCD相关推荐
- STM32L475 SPI驱动LCD ST7789V2详解
概述 最近在学习正点原子潘多拉开发板,在此结合原子哥的代码, 对SPI驱动LCD做一个详细介绍. TFTLCD 和 SPI TFTLCD介绍 TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为:Th ...
- STM32使用硬件SPI驱动RC522门禁模块
0.前言 RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率.准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用S ...
- STM32—4线SPI驱动SSD1306 OLED
文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...
- 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522
目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...
- STM32F103以SPI 驱动128*128的TFT彩屏,LCD驱动为ST7735s,程序使用CubeMX的HAL库开发方式,另外也做了标准库的程序移植
0. 关于本文: 其实我一直都比较懒,不喜欢写博客.但网上关于详细讲解SPI驱动LCD的文章比较少,虽然也能下载到一些案例程序,但对于初学者来说,如果不懂LCD驱动的原理,不懂如何对文字和图片取模, ...
- STM32单片机基础17——使用硬件SPI驱动TFT-LCD(ST7789)
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与ST7789通信,驱动16bit TFT-LCD 屏幕. 0. 前言 学习 SPI 外设驱动LCD屏幕没有 ...
- stm32硬件SPI驱动3线SPI-LCD的方法
1.基本控制原理 三线SPI LCD, 顾名思义,最少只需要3个IO控制LCD显示,如果采用硬件控制上电时序和背光,最少只需要接SCK,CS,MOSI三个引脚即可控制LCD,并且不管接不接其他引脚,控 ...
- ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能
最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...
- 华大HC32F460 SPI 驱动 ST7735S LCD显示器
华大HC32F460 SPI 驱动 ST7735S LCD显示器 前言: STM32改HC32F460 换芯片后发现SPI硬件驱动不了屏了,这个小问题搞了很久,最后用逻辑分析仪,分析时序,然后解决了, ...
最新文章
- 互联网协议 — IPv4 — CIDR 网络地址表示法
- telnet命令的使用
- python123数值运算_python基础篇【第二篇】:数据运算、数据类型
- 支持断线重连、永久watcher、递归操作 ZooKeeper 客户端
- 最详细的R-CNN论文笔记
- android wear ios表盘,秒杀 Apple Watch,Android Wear 又有 17 款新表盘可以玩啦!
- java ios 字符串_Java 与 iOS使用RSA 加密签名
- php 上一页 下一页代码,php无限上一页,下一页,求完善代码??
- 在Ubuntu下后台持续运行Python程序
- android手机怎么改字体,手机字体怎么改 安卓手机字体修改教程
- 4.3寸TFTLCD显示JPG图片
- 实测!Ubuntu18.04解决Teamview检测为商用问题
- 最长无重复子数组算法-java实现
- 东方博宜OJ 1052 - 【入门】行李托运费
- [PMZL]第1卷-误入天庭-02
- windows jdk1.7安装
- Fast RCNN多细节详解
- \u*格式转码成中文
- 2018 Python零基础大神运维自动化就业教程最新版Python运维就业 1-5部分
- Web of Science(WOS)导出参考文献的格式缩略词说明
热门文章
- 桌面调试平台flipper
- Debian9换源(阿里源)(Linux子系统)
- python数据科学包(七)—— matplotlib实战之绘制球员能力图和股票K线图
- 网易云 MySQL实例迁移的技术实现
- 用cookie简易实现购物车加购过程(详细教程)
- mysqldump: Got error: 1045: Access denied for user 'USER'@'localhost' Couldn't execute 'SHOW FIEL
- P02014252 孙浩宸 信息论课程问答题作业
- Python3发送带图邮件
- 快速学习Kotlin(七)集合与操作符
- 北京环球度假区与腾讯互动娱乐达成合作,引入系列腾讯游戏IP