查看: 1984|回复: 1

【赚周年币】技术帖——Fireduino学习4:使用SPI总线驱动5110...

[复制链接]
  • TA的每日心情
    擦汗
    2024-1-30 09:58
  • 签到天数: 1491 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2016-12-8 10:39:45 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 wudianjun2001 于 2016-12-8 10:41 编辑

        上篇文章讲的是使用普通IO口驱动5110显示屏,这次使用板卡的SPI总线来驱动。

    SerialPeripheral Interface(SPI)
           SPI是串行外设接口(SerialPeripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,在主芯片的管脚上主要占用四根线。
    MOSI– 主设备数据输出,从设备数据输入;
    MISO– 主设备数据输入,从设备数据输出;
    SCLK– 时钟信号,由主设备产生;
    SS – 从设备使能信号,由主设备控制
          其中MOSI/MISO/SCLK三根线实现全双工的通信,简单高效了,由于器件的寻址通过一个SS片选脚来指定,当连接多台SPI设备时,需要多个片选信号。
          SCLK提供时钟脉冲,MOSI,MISO则基于此脉冲完成数据传输。数据输出通过 MOSI线,数据在时钟上升沿/下降沿时改变,在紧接着的下降沿/上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟的改变(上沿和下沿为一次),就可以完成8位数据的传输。
          SS线是用于一根使能线,特别是接多个外围设备的时候,可以通过控制SS线,对不同的外围设备进行通信

    写一个程序关于SPI必须注意的问题有:
    1. 字节的传输是从最高位(MSB)传输,还是从最低位(LSB)传输呢?这是由SPI.setBitOrder()函数进行设置的。
    2. 当数据不传输时,时钟线是高还是低?
    3. 触发方式是上升沿触发还是下降沿触发呢?这个由SPI.setDataMode()函数进行设置。
    4.SPI运行的速度是多快呢?这个由SPI.setClockDivider()函数进行设置

    板卡的SPI对应的引脚
    1.png

    硬件连接
    2.png

    程序部分在上次的基础上稍微改动下就可以了,引脚定义部分程序
    3.png

    SPI发送一个字节数据函数
    4.png

    系统初始化部分,这里去掉了不用的IO口初始化,增加了SPI的初始化
    5.png

    显示效果
    6.png
    源代码
    fire.rar (6.49 KB, 下载次数: 23)

    评分

    参与人数 1 +10 收起 理由
    loveeeboard + 10

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-7-27 09:48
  • 签到天数: 44 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-12-22 17:17:54 | 显示全部楼层
    给力啊 我也得准备一个屏幕~
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 17:55 , Processed in 0.139406 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.