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

5 1371
tjCFeng  


    说完了TWI了,按照前面的顺序就该是SPI了。SPI也是一种很常用的通讯协议,而且速度比TWI快,所以这个也是要实现的。同样,详细的协议专门的教程讲解,我就不重复了,只要知道需要用到的引脚有MOSI、MISO、SCLK和CS四根线,再加上VCC和GND。这次把顺序颠倒一下,先看看效果。

    手上正好有之前香蕉派的模块,SPI模式OLED的显示屏。Guitar的引脚兼容BananaPI和Pro,所以这个模块可以直接插到Guitar上来使用。不过OLED屏只有写入而没有读取,所以比一般的SPI少用了一根线,也就是MOSI、SCLK、CS这几个,当然还需要另外的DC、RST引脚,找到对应的GPIO就可以完全控制了。

10.JPG

    怎么样,挺漂亮吧。


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

2.png

    手册中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口及其他控制脚。

3.png

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

4.png


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

5.png

    OLED的初始化代码,都是固定的,很方便移植。已实现的功能:
        Clear:清屏
        Open:使能屏幕
        Close:关闭屏幕
Write:显示一个字符
        Writes:显示字符串
    其他的比如图形、图像的显示大同小异,请自己添加进来吧。

    以上这些程序都已经上传到https://github.com/tjCFeng/GoS500中,就不再发附件了,可以直接下载在工程中引用。



很好的给开发者用的demo呀

tjCFeng  
tony_zhang 发表于 2016-2-25 20:35
很好的给开发者用的demo呀

谢谢,Guitar很好用,做起来很方便

很不错啊,现在golang的东西还很少,多谢分享

tjCFeng  
SimonLong 发表于 2016-2-26 09:41
很不错啊,现在golang的东西还很少,多谢分享

谢谢,大家一起学习。

xiajinyi
ferragamo belt
ferragamo shoes
asics shoes
michael kors outlet
nike outlet factory
coach outlet

jordan shoes
christian louboutin
mlb jerseys
nike shoes
off white outlet
longchamp outlet
moncler jackets
fitflops clearance
coach outlet
adidas clothing
kate spade outlet
moncler outlet
moncler jackets
canada goose outlet
fitflops clearance
coach factory outlet
christian louboutin
clarks outlet
issey miyake

tory burch outlet
adidas outlet
adidas clothing
canada goose outlet
coach factory outlet
christian louboutin outlet
ray ban sunglasses
ugg boots
jordans
nike clothing
louboutin shoes
christian louboutin outlet
ralph lauren polo
valentino shoes
ugg outlet
yeezy boots 350
prada handbags
clarks shoes
adidas yeezy
canadian goose
ugg outlet
soccer shoes
louboutin shoes
jordan uk
canada goose
bottega veneta
christian louboutin outlet
canada goose outlet
north face
ray ban sunglasses
jordan clothing
ugg outlet clearance
dsquared2
moncler outlet
coach outlet
longchamp
red bottom shoes
canada goose outlet
lacoste polo
jordan shoes
birken stock
longchamp outlet
ray ban sunglasses
salomon shoes
jordan shoes
ralph lauren
canada goose
christian louboutin shoes
coach handbags
coach outlet
canada goose jackets
coach outlet
supreme clothing
ecco shoes
coach outlet
louboutin shoes
adidas shoes
pandora charms
jordans
nike shoes outlet
christian louboutin shoes
louboutin shoes
canada goose outlet
nike air max
hermes belt
nike blazers
reebok outlet
nike tn
coach factory outlet
pandora jewelry
moncler outlet
red bottom shoes
canada goose outlet

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

本版积分规则