查看: 172|回复: 1

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

[复制链接]

1553

主题

25

好友

1万

积分

翰林

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    前天 13:17
  • 签到天数: 962 天

    连续签到: 4 天

    [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, 下载次数: 4)


    已有 1 人评分 收起 理由
    loveeeboard + 10

    总评分:  + 10   查看全部评分

    回复

    使用道具 举报

    6

    主题

    0

    好友

    264

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-2-17 08:12
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-6-25 20:14 , Processed in 0.110872 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部