查看: 6716|回复: 6

[原创] 【LPC11U68】学习5:使用SPI驱动OLED屏

[复制链接]
  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 1789 天

    [LV.Master]伴坛终老

    65

    主题

    7557

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    12789
    最后登录
    2024-5-8
    发表于 2018-11-13 08:41:05 | 显示全部楼层 |阅读模式

    上一篇使用了GPIO口模拟SPI来驱动OLED显示屏,并且遇到了一些不明白的问题,这次把这个问题搞明白了,并且使用SPI来驱动,在驱动过程中的一些问题也顺便和大家分享下。
      SSP(synchronous Seril Port)同步串行端口控制器,可支持SPI、TI和Microwire协议,一条总线允许有多个从机,但某一个时刻只允许有一个主机和一个从机进行通信。多应用于EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间(而I2C多用于同一单片机不同芯片之间的短距离通信)。SPI支持全双工通信,而I2C仅支持半双工,Uart也支持全双工通信。
      SPI通信是数据交换的过程,数据通过移位寄存器进行交换。
      主机发送时,将一位数据写入TxFIFO移入移位寄存器,数据通过MOSI移出主机,从机通过MOSI移入从机,从机同时会从移位寄存器中移出一位数据到主机,如果是只写操作,主机则可以忽略读取到的数据,通过Dummy = LPC_SSP1->DR假装读取进行忽略。
      主机接收数据时,主机首先要发送一个指令启动从机发送,如高电平(0xFF),从机接收到后发送数据到移位寄存器中。每次接收主机都需要发送数据触发从机发送数据。

    先说下上次使用IO口驱动OLED时,碰到一些引脚不听话,控制不了,发来发现是程序初始化的时候已经把这些IO口设置为其他功能,而不是GPIO的功能了。

    先来看下数据书上的GPIO功能列表
    1.png

    我主要使用这几个引脚来驱动OLED
    2.png

    之前这几个引脚有的不听使唤,是因为在Board_SystemInit.c的文件的Board_SystemInit函数里把相关的引脚初始化为别的功能了
    3.png
    4.png

    这里的这几个IO口都设置为SPI功能了,我们这次就要使用这些功能,但是PIO0_8要设置为GPIO口使用,OLED屏只有输入没有输出。

    引脚相关定义,这里为了方便,增加了一个宏定义
    5.png

    SPI初始化设置,这里也有个坑,用官方的库初始化,最后效果虽然也有显示,但是显示的颜色不对,找了一下午折腾了半天也没找到为题,后来在下班的前几分钟想到干脆用寄存器直接来操作,反正也没几个寄存器,一下子就好了,反复测试了几次,发现这个库的初始化确定有问题
    6.png

    SPI硬件有4根信号线:SCK(串行时钟线)、CS(片选信号)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)
    其中,CS通过拉低来选择从机设备,数据在SCK时钟的边沿跳变时进行数据采样和数据的读取和发送。具体规则由CPOL和CPHA控制。
    CPOL:1——空闲状态时SCK为高电平  0——空闲状态时SCK为低电平
    CPHA:1——数据在第一个跳变沿采样  0——数据在第二个跳变沿采样
    故共有4种组合:
    CPOL=0,CPHA=0,数据在第一个上升沿时采样,第一个下降沿读取/发送
    CPOL=0,CPHA=1,数据在下降沿时采样,上升沿读取/发送
    CPOL=1,CPHA=0,数据在第一个下降沿时采样,第一个上升沿读取/发送
    CPOL=1,CPHA=1,数据在上升沿采样,下降沿读取/发送

    使用库初始化显示的效果
    7.png

    SPI发送一个字节函数,使用SPI的速度确实是快了很多
    8.png

    主程序里的显示调用函数
    9.png

    实际的显示效果照片
    10.png
    11.png
    12.png




    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-12-12 12:24
  • 签到天数: 160 天

    [LV.7]常住居民III

    1

    主题

    226

    帖子

    0

    高级会员

    Rank: 4

    积分
    660
    最后登录
    2022-12-12
    发表于 2018-11-13 09:14:53 | 显示全部楼层
    真优秀
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    9 分钟前
  • 签到天数: 1485 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    93047
    最后登录
    2024-5-8
    发表于 2018-11-13 09:22:33 | 显示全部楼层
    哈哈,看书不仔细吧?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2020-3-5 09:44
  • 签到天数: 187 天

    [LV.7]常住居民III

    0

    主题

    319

    帖子

    0

    高级会员

    Rank: 4

    积分
    725
    最后登录
    2020-3-5
    发表于 2018-11-13 09:22:42 | 显示全部楼层
    学习学习
    回复

    使用道具 举报

  • TA的每日心情
    开心
    20 小时前
  • 签到天数: 823 天

    [LV.10]以坛为家III

    71

    主题

    2454

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5538
    最后登录
    2024-5-8
    发表于 2018-11-13 12:38:49 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7361
    最后登录
    2021-8-30
    发表于 2018-11-13 14:19:50 | 显示全部楼层
    不错的OLED
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-11 19:59
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    3

    主题

    27

    帖子

    1

    注册会员

    Rank: 2

    积分
    190
    最后登录
    2019-1-25
    发表于 2018-11-17 23:28:32 | 显示全部楼层
    我也要学习这个
    做人,最重要的就是开心啦!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-8 20:56 , Processed in 0.123625 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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