查看: 910|回复: 0

【LeMaker Guitar】GoS500库 -- 5.SPI及驱动显示屏模块

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-5-23 10:09:52 | 显示全部楼层 |阅读模式
    分享到:
    说完了TWI了,按照前面的顺序就该是SPI了。SPI也是一种很常用的通讯协议,而且速度比TWI快,所以这个也是要实现的。同样,详细的协议专门的教程讲解,我就不重复了,只要知道需要用到的引脚有MOSI、MISO、SCLK和CS四根线,再加上VCC和GND。这次把顺序颠倒一下,先看看效果。
        手上正好有之前香蕉派的模块,SPI模式OLED的显示屏。Guitar的引脚兼容BananaPI和Pro,所以这个模块可以直接插到Guitar上来使用。不过OLED屏只有写入而没有读取,所以比一般的SPI少用了一根线,也就是MOSI、SCLK、CS这几个,当然还需要另外的DC、RST引脚,找到对应的GPIO就可以完全控制了。

        怎么样,挺漂亮吧。

        完全是硬件实现的SPI,而不是软件,所以速度比较快,而且时序很准,比模拟的好控制。
        要使OLED有显示,这个过程相对麻烦一些,除了要先实现SPI的功能外,还要对OLED进行初始化、命令和数据的发送等。一步一步来实现,首先来看SPI的功能。

        手册中SPI的各个寄存器:
    CTL控制寄存器
        CLKDIV分频寄存器
        STAT状态寄存器
        RXDAT接收数据寄存器
        TXDAT发送数据寄存器
        TCNT数据长度寄存器
        TXCR发送DMA寄存器
        RXCR接收DMA寄存器
        硬件SPI操作的流程:首先选定要操作的SPI,0、1、2...,然后初始化SPI的各个配置,使能SPI,将要发送的数据长度赋给TCNT寄存器,接着往DMA队列中写入要发送的数据,在写入的时候判断是否写入成功,同时判断接收队列中是否有数据,如果有数据则读出数据保存到缓冲区中,直到所有的数据发送和接收完成,最后关闭SPI。
        由于S500的一个IO口可能会从属于多个SPI,所以在使用SPI的时候,先找到和某一组SPI相关的IO口,创建为GPIO,将它们一起通过参数赋给SPI的创建函数,同时指定是哪组SPI,这样程序就会自动设置复用功能,将它们转换为SPI的功能,并且打开对应设备的时钟。这几个功能分别在MFP.go和CMU.go中实现。目前没有将所有的SPI组包含进去,在需要使用的时候自行添加。
        说实话我没有想到S500的硬件SPI会是这么简单,比其他芯片操作起来简单不少,没有大量的状态需要判断,不错。
        SPI功能封装完成,下面就要来操作OLED了。OLED模块直接插到板子上是没有任何显示的,需要使用软件来初始化。不过呢,在使用之前要先确定好IO口及其他控制脚。

        板子的扩展口引出的SPI是SPI0,那么对应的IO就是
    MOSI-PC25
         MISO-PC24
         SCLK-PC22
         CS-PC23
        由于OLED模块没有用到MISO,所以这个IO口是没有用的,但是需要给参数赋值。
        还有两个控制口:
    DC-PC6
         RST-PC5
        有了这些就可以开始写程序了。OLED我同样给封装了一下,上传到了Device/SSD1306.go文件,可以直接下载使用。

        这部分也可以当作SPI的示例程序,其他的SPI类似,只要找对了IO口即可。两个控制脚的方法和普通GPIO的一模一样。

        OLED的初始化代码,都是固定的,很方便移植。已实现的功能:
         Clear:清屏
         Open:使能屏幕
         Close:关闭屏幕
    Write:显示一个字符
         Writes:显示字符串
        其他的比如图形、图像的显示大同小异,请自己添加进来吧。
        以上这些程序都已经上传到https://github.com/tjCFeng/GoS500中,就不再发附件了,可以直接下载在工程中引用。
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 08:46 , Processed in 0.124154 second(s), 17 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.