网上买了块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相关推荐

  1. STM32L475 SPI驱动LCD ST7789V2详解

    概述 最近在学习正点原子潘多拉开发板,在此结合原子哥的代码, 对SPI驱动LCD做一个详细介绍. TFTLCD 和 SPI TFTLCD介绍 TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为:Th ...

  2. STM32使用硬件SPI驱动RC522门禁模块

    0.前言 RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率.准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用S ...

  3. STM32—4线SPI驱动SSD1306 OLED

    文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...

  4. 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

    目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...

  5. STM32F103以SPI 驱动128*128的TFT彩屏,LCD驱动为ST7735s,程序使用CubeMX的HAL库开发方式,另外也做了标准库的程序移植

    0.  关于本文: 其实我一直都比较懒,不喜欢写博客.但网上关于详细讲解SPI驱动LCD的文章比较少,虽然也能下载到一些案例程序,但对于初学者来说,如果不懂LCD驱动的原理,不懂如何对文字和图片取模, ...

  6. STM32单片机基础17——使用硬件SPI驱动TFT-LCD(ST7789)

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与ST7789通信,驱动16bit TFT-LCD 屏幕. 0. 前言 学习 SPI 外设驱动LCD屏幕没有 ...

  7. stm32硬件SPI驱动3线SPI-LCD的方法

    1.基本控制原理 三线SPI LCD, 顾名思义,最少只需要3个IO控制LCD显示,如果采用硬件控制上电时序和背光,最少只需要接SCK,CS,MOSI三个引脚即可控制LCD,并且不管接不接其他引脚,控 ...

  8. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能

    最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...

  9. 华大HC32F460 SPI 驱动 ST7735S LCD显示器

    华大HC32F460 SPI 驱动 ST7735S LCD显示器 前言: STM32改HC32F460 换芯片后发现SPI硬件驱动不了屏了,这个小问题搞了很久,最后用逻辑分析仪,分析时序,然后解决了, ...

最新文章

  1. 互联网协议 — IPv4 — CIDR 网络地址表示法
  2. telnet命令的使用
  3. python123数值运算_python基础篇【第二篇】:数据运算、数据类型
  4. 支持断线重连、永久watcher、递归操作 ZooKeeper 客户端
  5. 最详细的R-CNN论文笔记
  6. android wear ios表盘,秒杀 Apple Watch,Android Wear 又有 17 款新表盘可以玩啦!
  7. java ios 字符串_Java 与 iOS使用RSA 加密签名
  8. php 上一页 下一页代码,php无限上一页,下一页,求完善代码??
  9. 在Ubuntu下后台持续运行Python程序
  10. android手机怎么改字体,手机字体怎么改 安卓手机字体修改教程
  11. 4.3寸TFTLCD显示JPG图片
  12. 实测!Ubuntu18.04解决Teamview检测为商用问题
  13. 最长无重复子数组算法-java实现
  14. 东方博宜OJ 1052 - 【入门】行李托运费
  15. [PMZL]第1卷-误入天庭-02
  16. windows jdk1.7安装
  17. Fast RCNN多细节详解
  18. \u*格式转码成中文
  19. 2018 Python零基础大神运维自动化就业教程最新版Python运维就业 1-5部分
  20. Web of Science(WOS)导出参考文献的格式缩略词说明

热门文章

  1. 桌面调试平台flipper
  2. Debian9换源(阿里源)(Linux子系统)
  3. python数据科学包(七)—— matplotlib实战之绘制球员能力图和股票K线图
  4. 网易云 MySQL实例迁移的技术实现
  5. 用cookie简易实现购物车加购过程(详细教程)
  6. mysqldump: Got error: 1045: Access denied for user 'USER'@'localhost' Couldn't execute 'SHOW FIEL
  7. P02014252 孙浩宸 信息论课程问答题作业
  8. Python3发送带图邮件
  9. 快速学习Kotlin(七)集合与操作符
  10. 北京环球度假区与腾讯互动娱乐达成合作,引入系列腾讯游戏IP