[STM8] 【STM学习】STM8新手上路——第三天、串口TFT硬件SPI

[复制链接]
3597|14
 楼主| sjw1716094642 发表于 2015-8-1 14:07 | 显示全部楼层 |阅读模式
这次在上次的基础上,把模拟SPI改成用STM8的硬件SPI。
在上回的工程代码上稍作修改即可。

先创建一个空工程。
1.png

得到一个这样的工程
2.png

把上次工程的代码文件都拷至改工程下,右击工程名,添加文件 3.png ,然后记得吧工程的一些必要配置都配置完,就可以准备改代码了。

写程序第一步:查看引脚位置,在数据手册中即可找到。
引脚.png 可以看到,SPI用到的引脚是PC5~7和PE5
STM8S的SPI引脚功能复用是不需要配置的,所以这里也省去了一个步骤。

第二步:查看STM8的SPI特性介绍
STM8SPImainfeature.png

查看是否可以满足我们的使用要求,我这里只需要单片机给显示屏发送数据即可,速率没有硬性要求,越快越好。

第三步:查看资源配置介绍(略)

第四步:查看寄存器配置

CR1.png
帧格式  :     改显示屏用的是高位先发送,所以Bit7=0;
SPI使能:     这步在所有配置结束后再完成;
波特率控制:这里越快越好,所以Bit3~5=000;
主设备选择:是主机模式 所以Bit2=1;
时钟极性:   这里选择高电平状态。
时钟相位:   主模式不予考虑

最后得到:   SPI->CR1=0x06;

再看CR2
CR2.png
因为这里对TFT只有发送数据,所以这里将Bit6~7置1,单线双向模式,只发送,即可
CRC校验不使用,故其余位都置0即可;

SPI->CR2=0xc0;

再看SR
SR.png

因为只用到了发送,所以只需关心Bit1就行,为1时发送区为空,可以写入

数据寄存器DR
DR.png

由SR与DR寄存器,很容易就可以写出写数据函数
  1. static void Wdata(u8 data)      //写入数据
  2. {
  3.   SCE_0;
  4.   DC_1;
  5.   SPI->DR=data;
  6.   while(!(SPI->SR&0x2));
  7. }

  8. static void Wcom(u8 data)      //写入指令
  9. {
  10.   SCE_0;
  11.   DC_0;
  12.   SPI->DR=data;
  13.   while(!(SPI->SR&0x2));
  14. }
SPI配置函数为
  1. static void SPI_init(void)
  2. {
  3.   SPI->CR1=0x06;
  4.   SPI->CR2=0xc0;
  5.   SPI->CR1|=0x40;
  6. }
仅三句话,十分简易

最后通过刷屏测试,很明显可以看出硬件SPI比模拟的快很多,而且硬件还有一个好处是,字节发送过程不会被打断,数据传输的准确性更高。

谢谢阅读~

代码: 1.44Inc彩屏硬件SPI.zip (613.08 KB, 下载次数: 70)





双金瓶 发表于 2015-8-1 14:09 | 显示全部楼层
前排占位支持了,嘿嘿
mmuuss586 发表于 2015-8-1 19:59 | 显示全部楼层

支持下‘
 楼主| sjw1716094642 发表于 2015-8-1 21:29 | 显示全部楼层
双金瓶 发表于 2015-8-1 14:09
前排占位支持了,嘿嘿

谢谢
 楼主| sjw1716094642 发表于 2015-8-1 21:29 | 显示全部楼层

O(∩_∩)O谢谢
lvyunhua 发表于 2015-8-2 13:59 | 显示全部楼层
不错,支持下。
xia00 发表于 2015-8-2 21:08 | 显示全部楼层
表示支持,向楼主学习!!!!
lefeng 发表于 2015-8-2 21:12 | 显示全部楼层
把这个搞明白了,SPI基本就可以了
lihai00 发表于 2015-8-2 21:24 | 显示全部楼层
支持下,说的很对!!!!!
lwsn 发表于 2015-8-2 21:35 | 显示全部楼层
SPI可以主从互传数据
Thor9 发表于 2015-8-2 22:36 | 显示全部楼层
本帖最后由 Thor9 于 2015-8-2 22:38 编辑

SPI有3线(用于单向传输时,也就是半双工方式)和4线的
ljune 发表于 2015-8-3 14:06 | 显示全部楼层
1.44寸128*128扫描速度应该可以
hclin 发表于 2015-11-20 23:57 | 显示全部楼层
very good, nice job !!!
Wenyan123 发表于 2020-4-13 18:39 | 显示全部楼层
这个芯片是STM8s。系列的吧
Wenyan123 发表于 2020-4-13 18:45 | 显示全部楼层
楼主来个STM8L152K4的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎加入微控制家园,讨论微控制技术:群号 258891985

24

主题

302

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部