社区导航

 

搜索
查看: 10939|回复: 36

[MSP432] 【原创】继续折腾MSP432 Launchpad 串口驱动OLED 改为硬件SPI~~~

[复制链接]

1572

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2015-8-6 00:41 | 显示全部楼层 |阅读模式
前几天调通了MSP432 Launchpad 串口驱动OLED ,不过用的是软件模拟SPI

既然片子上带有硬件SPI,那就干脆用起来吧

于是昨天折腾了一晚上,终于调通了。不过其实只有单向的写数据,算是调通了一半吧

首先SPI有4线和3线两种,区别就是有没有CS这根线,昨天研究了半天,432Launchpad上40根脚竟然没有一个USCI是四根线都引出来的....

无奈就只好用三线SPI了,其实用到的只有SCLK和SIMO两根,目前这块OLED不需要master去读数据

另外三根线就是用GPIO模拟了,包括CS(片选),A0(命令、数据选择)和RESET

其实使用了硬件SPI后,相对于之前的软件模拟就只是把每次发送8个bit、对应的CLK反转以及相关的移位、赋值、判断等操作交给硬件去做了

实际的代码对比如下:

无标题.png


当使用硬件SPI时,把数据写入到SPI模块的TX Buffer之后就不用管了,在这里我是使用了中断,发送完成之后会触发中断,从sleep中唤醒继续执行

那么实际效果有多大变化呢?看下面的视频就一目了然了:

首先是之前的软件模拟SPI的刷屏速度:



然后就是硬件SPI的速度:



可以看到改进还是很大的。

至于中断的配置,也是参考了TI提供的例程。

我一开始是用的从TI resource explorer里导出来的一个闪烁LED的例程,所以自带了一个msp_432_startup_ccs.c的文件。

之前还没注意到这个文件,这次使用SPI的例程后,一开始中断响应函数始终无法触发,于是又到原始的例程里顺藤摸瓜,这才发现这个startup的文件的作用。

打开就会发现,主要有两个部分:
无标题.png
这里是供用户声明自己的中断响应函数。

然后在下面有一个interrupt vector table,里面对应每一个中断源都写了一个中断响应函数,默认是指向intDefaultHandler,里面是一个while(1)死循环
无标题.png
...

无标题.png

...

无标题.png

刚开始我只在上面声明了我的函数,没有在这个table里改,结果每次都是跑到这个死循环里,纠结了好一会才搞清楚上面这个table的用法。

另外我的中断的使用方式和TI例程里的有点出入。

每个USCI模块都有一个寄存器表,其中有一个是TXIFG,发送中断标志位,CCS里的描述如下:

无标题.png

也就是只要是TX buffer空了,这个位就置1。上电的时候buffer肯定是空的,那这个位也就一直是1了。

而中断触发判断的就是这个标志位,所以只要使能中断,就会触发

所以TI的例程里就是这样做的:

初始化好中断之后对应SPI模块的中断使能一直是禁用的,等需要发送数据了,就把使能置1,这样就触发中断,进到中断响应函数,在这里往TX buffer里填数据,SPI开始发送数据,接着把中断使能置0,禁用中断,返回。

个人感觉这种用法简直是反人类啊,一开始看的时候完全摸不着头脑。

现在我的方法是这样的:初始化好中断之后先清flag,然后使能中断。这样后面只要往TX buffer里填入数据就开始发送,发送完后触发中断,进中断响应函数,清中断标志位,返回。

可能是我还没理解TI例程的用意,不过个人感觉还是这样逻辑上比较清晰一些。

其实TI提供的例程还是很丰富的,不过可能有些地方确实还可以改进一下,上面SPI的例程是参考的msp432p401_euscia3_spi_09

具体的代码可以参考附件里的工程,感觉应该是比较简单的。有不清楚的欢迎回帖讨论~~~
七月份的尾巴~突然想起来432~~~八月份的前奏~就把它搞起来
继续折腾MSP432 Launchpad 串口驱动OLED 改为硬件SPI

我的432 launchpad 扩展板,不过有点悲剧

我的MSP432 launchpad 扩展板 之 电容触摸板 终于调通啦



msp432 oled hardwareSPI.rar

29.91 KB, 下载次数: 172

评分

3

查看全部评分


回复

使用道具 举报

1572

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2015-8-6 10:25 | 显示全部楼层
shower.xu 发表于 2015-8-6 09:29
你们城里人真有时间,真会玩!

说的人家好像不务正业一样

回复

使用道具 举报

2147

TA的帖子

24

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2015-8-6 09:29 | 显示全部楼层
你们城里人真有时间,真会玩!

点评

说的人家好像不务正业一样  详情 回复 发表于 2015-8-6 10:25

回复

使用道具 举报

550

TA的帖子

6

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-8-6 10:16 | 显示全部楼层
屌炸天,,,,mark

回复

使用道具 举报

3587

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2015-8-6 11:50 | 显示全部楼层
不错的分享
淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目

回复

使用道具 举报

1366

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2015-8-7 23:56 | 显示全部楼层
等过完电赛看看

回复

使用道具 举报

87

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-11 12:58 | 显示全部楼层
非常感谢楼主,最近正在学习MSP432的知识,遇到一些问题,正好楼主在这里做了详细的分析和说明,给我们提供了一些解决问题的思路和方法,我要向楼主学习,楼主真棒~~

回复

使用道具 举报

101

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-11 15:40 | 显示全部楼层
anqi90 发表于 2015-8-6 10:25
说的人家好像不务正业一样

就是

回复

使用道具 举报

101

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-11 15:40 | 显示全部楼层
感谢楼主分享~

回复

使用道具 举报

2

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-11-23 10:38 | 显示全部楼层
非常感谢楼主分享,最近也在研究432的芯片

回复

使用道具 举报

28

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-2-19 16:06 | 显示全部楼层
楼主真棒啊

回复

使用道具 举报

28

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-3-2 11:25 | 显示全部楼层
你好请问这个该怎么处理呢?
APUXVL8)64%L)2A7NWJSBA4.jpg

点评

应该就是开了中断但是没有注册对应的中断响应函数,就跑到了默认的中断响应函数里了 具体是哪个中断不好说,还要去看代码,其他的就参考上面的内容应该就可以了  详情 回复 发表于 2016-3-2 23:29

回复

使用道具 举报

1572

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2016-3-2 23:29 | 显示全部楼层
335340679 发表于 2016-3-2 11:25
你好请问这个该怎么处理呢?

应该就是开了中断但是没有注册对应的中断响应函数,就跑到了默认的中断响应函数里了

具体是哪个中断不好说,还要去看代码,其他的就参考上面的内容应该就可以了

回复

使用道具 举报

28

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-3-3 09:02 | 显示全部楼层
哦,我看看,谢谢哈

回复

使用道具 举报

26

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-3-16 09:58 | 显示全部楼层
咳,下了楼主的程序,NVIC_ISER0等显示么有定义,这种情况怎么办呢?求指导
20160316093701.png

点评

看一下包含的头文件能不能打开,按住ctrl点include的文件名 如果有打不开的就到工程属性里设置一下包含路径,可能是TI目录安装的路径不一样  详情 回复 发表于 2016-3-16 10:18

回复

使用道具 举报

1572

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2016-3-16 10:18 | 显示全部楼层
HITZHANGT 发表于 2016-3-16 09:58
咳,下了楼主的程序,NVIC_ISER0等显示么有定义,这种情况怎么办呢?求指导

看一下包含的头文件能不能打开,按住ctrl点include的文件名
如果有打不开的就到工程属性里设置一下包含路径,可能是TI目录安装的路径不一样

回复

使用道具 举报

26

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-3-16 11:27 | 显示全部楼层
anqi90 发表于 2016-3-16 10:18
看一下包含的头文件能不能打开,按住ctrl点include的文件名
如果有打不开的就到工程属性里设置一下包含 ...

都可以打开的。我遇到这个问题是 新建的工程也会报错,不知道哪里出了问题

回复

使用道具 举报

26

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-3-16 12:56 | 显示全部楼层
anqi90 发表于 2016-3-16 10:18
看一下包含的头文件能不能打开,按住ctrl点include的文件名
如果有打不开的就到工程属性里设置一下包含 ...

楼主有没msp432p401r.h文件,我感觉此处可能有问题,能发我一份么?

点评

到安装ccs的目录下面找一下,应该都有的,不过如果能打开的话应该就不会有问题啊 在出错的宏定义上按住ctrl单击,看能找到定义么  详情 回复 发表于 2016-3-16 16:25

回复

使用道具 举报

1572

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2016-3-16 16:25 | 显示全部楼层
HITZHANGT 发表于 2016-3-16 12:56
楼主有没msp432p401r.h文件,我感觉此处可能有问题,能发我一份么?

到安装ccs的目录下面找一下,应该都有的,不过如果能打开的话应该就不会有问题啊
在出错的宏定义上按住ctrl单击,看能找到定义么

点评

在出错的宏定义上按Ctrl单击,找不到定义啊。我在msp432p401r.h的文件里搜索都找不见这个定义。。。是不是最新的CCS没有写啊,或者改别的名字了?  详情 回复 发表于 2016-3-16 17:04

回复

使用道具 举报

26

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-3-16 17:04 | 显示全部楼层
anqi90 发表于 2016-3-16 16:25
到安装ccs的目录下面找一下,应该都有的,不过如果能打开的话应该就不会有问题啊
在出错的宏定义上按住c ...

在出错的宏定义上按Ctrl单击,找不到定义啊。我在msp432p401r.h的文件里搜索都找不见这个定义。。。是不是最新的CCS没有写啊,或者改别的名字了?

点评

我的是在msp432p401r.h里面的,但是没有在代码里include,好像是配置对应的目标芯片来自动包含进去的 我这边的工程配置是这样的:[attachimg]233717[/attachimg]  详情 回复 发表于 2016-3-17 00:10

回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-29 09:16 , Processed in 0.618567 second(s), 42 queries , Gzip On, MemCache On.

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