查看: 1446|回复: 3

【4月主题月】【原创】我用SPI外设接口驱动LCD屏

  [复制链接]
  • TA的每日心情
    开心
    前天 16:53
  • 签到天数: 1338 天

    [LV.10]以坛为家III

    88

    主题

    4296

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9065
    最后登录
    2024-5-10
    发表于 2021-4-23 15:32:52 | 显示全部楼层 |阅读模式
    【4月主题月】我用SPI外设接口驱动LCD屏
        SPI(Serial Peripheral Interface)串行外设接口,嵌入式开发中最常用的接口之一,NXP旗下的MCU产品都有集成该外设。本文章将以NXP旗下Cortex-M0+内核的LPC11U68为例子进行技术分享。
        在LPC11U68的产品说明书里面,SPI外设接口以SSP0/1标识(可能规避专利问题吧)。SPI外设接口做为串行外设接口其特点非常明显:
    • 支持多主、多从的总线环境。但同一时刻的任务传输仅支持单主从通讯
    • 支持全双工模式,帧长度支持4bit至16bit
    • 主模式下最高25Mbit/s,从模式也高达4.17Mbit/s
    • 兼容多种厂商标准,如Motorola、TI、NS microwire等
    • 同步串行外设
    • 发送与接收均有8-帧的FIFO
    • 支持DMA通讯方式
        通常情况下,一个SPI主控器能外接多个从设备,然后通过CS片选信号选择从设备,通过SDI、SDO和SCK进行数据的传输。硬件连接示意图如下图所示:
    SPI01.png
        在LPC11U68的开发手册里,我们还需要确认一下SSP外设接口的串行格式,如TI格式和SPI格式。我们平时使用的较多的是SPI模式,所以我们以SPI模式为主。
        在使用SPI模式后,我们还需要再细分配置“时钟线电平”与“相位控制”,即Clock Polarity (CPOL) and Phase (CPHA) control。两个参数取值分别为0,1,所以共有4种情况。
        4种情况貌似有些多,所以我们仅以本次要驱动的LCD屏的驱动电平与相位举例。
    SPI02.png
        枯燥的曲线肯定不是我们愿意看的,但是还是要有——因为是截图,可以占版面。从上面的图片可以看到,SCK时钟线的空闲时的电平为低电平,MOSI与MISO数据锁存触发在时钟沿的上升沿。正是这样的电平与相位情况符合我们的LCD屏的接口电平标准。
        我们在配置LCD屏驱动的其它控制引脚(即GPIO),使用SPI外设发送数据,极大的加快了数据传输。从而,使用我们的LCD屏幕刷新速度有质的提高。
        SPI外设的应用比较多,本文也仅仅是驱动LCD屏举例。比如当配置SPI帧长度为9位时,多出来的1bit可以做为命令或数据的选择bit,这样可以节省出来一根宝贵的GPIO引脚。当然还有更加复杂的QSPI外设,但其原理是一样的。做为一名嵌入式工程师SPI外设接口一定要灵活而熟练的应用。
        谢谢大家




    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    97

    主题

    840

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3995
    最后登录
    2024-5-10
    发表于 2021-4-24 12:31:01 | 显示全部楼层
    我现在在LPC5569上用高速SPI接240x240的屏幕,模拟了四线SPI 接了个Flash吞吐率可以达到100Mbit/S。
    移植了LittleVGL 然后 加了PAJ7620那个手势识别的,我觉得demo挺酷的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    前天 16:53
  • 签到天数: 1338 天

    [LV.10]以坛为家III

    88

    主题

    4296

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9065
    最后登录
    2024-5-10
     楼主| 发表于 2021-4-24 21:15:38 | 显示全部楼层
    mgn 发表于 2021-4-24 12:31
    我现在在LPC5569上用高速SPI接240x240的屏幕,模拟了四线SPI 接了个Flash吞吐率可以达到100Mbit/S。
    移植了 ...

    我在LPC11U68芯片下使用GPIO模拟速度要慢好多的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2024-2-5 12:06
  • 签到天数: 627 天

    [LV.9]以坛为家II

    94

    主题

    1628

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4429

    热心会员

    最后登录
    2024-2-5
    发表于 2021-5-7 08:08:38 | 显示全部楼层
    jobszheng5 发表于 2021-4-24 21:15
    我在LPC11U68芯片下使用GPIO模拟速度要慢好多的。

    模拟的如果上100M左右,分辨率不是很高的话,还是能看看的~
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-11 02:53 , Processed in 0.120722 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表