7410|12

1291

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

【R7F0C809】硬件SPI刷OLED [复制链接]

 
本帖最后由 强仔00001 于 2015-9-10 17:02 编辑
    上次弄完了系统时钟部分,今天就像弄个OLED上去来显示一些数据。我的OLED屏幕的数据传输协议是SPI,论坛上也有分享了一个程序,但也只是用IO模拟的SPI时序而已。今天我带来的硬件的SPI驱动OLED,传输速率可以去到10MHz,大大的提升了传输速度和解放了一下CPU,让CPU可以有更多的时间去处理别的任务。闲话少说,马上进入我的讲解。
首先我这个是基于官方的一个历程修改的。官方历程的底层是不能直接驱动OLED的,因为历程是作为从发送接受。所以要自己动手修改一些配置,把它改成主发送接受。这就要参考下瑞萨的硬件手册的内容了。
我们来看看瑞莎的CSI的一些特性,SPI就是CSI
我们在看寄存器时只需要关注这几个寄存器即可:
   这个是开启CSI时钟使能部分的,这个就相当于一个总开关。

接下来就是公共运行时钟的选择,分别有CK00CK01,还有如果要改成主模式的,还要配置通道的传送时钟 fTCLK)选择的寄存器如下手册的截图:
   可以看出我们只需配置SMR00HCKSO0CCSO0位就可以搞定CSI0模块的时钟源部分。

还有注意下SMR寄存器的某些位一定要配置成某些值,如下手册的说明:
接下来就是模式选择的部分,这里可以配置成CSI模式和UART模式。
当配置完了模式后,我们还要配置是否发送和接受,这里要具体看大家的需求而改:
         接下来我们还要配置CSI的数据传输模式,根据数据和时钟的相位的组合,有4种模式可以配置,这里就需要根据自己要通信的芯片的技术文档所提供的模式要选择这四种模式之一来工作。大家可以看这个表就可以配置自己所需要的数据传输模式。
接着下来配置两个个使能开关,这是通信开始所需的。
关于时钟源这里还多说几句,大家想了解清楚,可以看看手册的一个框图:

由这几个框图可以看出时钟源是经过了3级选择器和2级预分频器产生的,先关的寄存器图上也有注明,大家可以去查阅。

还有关于IO口设置这里需要大家配置,这个手册上也有详细的说明:
这个是设置成输出或者输入模式的说明,官方手册上已经说明的很清楚。接下来就是分享关键的程序的部分了:

至关重要的SPI初始化部分:
  1. void R_CSI00_Create(void)
  2. {
  3.     ST0 |= 0x01U;                    /* 关闭 CSI00 */
  4.     CSIMK00 = 1U;                    /* 关闭 INTCSI00 中断 */
  5.     CSIIF00 = 0U;                    /* 清除 INTCSI00 中断标志位 */
  6.     /* 设置 INTCSI00 为低优先级*/
  7.     CSIPR100 = 1U;
  8.     CSIPR000 = 1U;
  9.     SIR00 = 0x03U;                   /* clear error flag */
  10.     SMR00H = 0x00U;                     //配置CSI00的时钟源为CK00,CKS00 由运行时钟 fMCK 的分频时钟提供
  11.     SMR00L = 0x20U;                        //配置为CSI模式
  12.     SCR00H = 0xC0U;                        //使能CSI的接受和发送,传输数据模式为类型1
  13.     SCR00L = 0x07U;                        //配置为CSI为传输数据传送顺序的选择为MSB 优先的输入 / 输出,数据长度为8bit
  14.     SDR00H = 0x00U;                        //配置CSI时钟2分频
  15.     SDR00L = 0x00U;
  16.     SO0 &= (uint8_t)~0x01U;          /* 初始化SO电平为低电平 */
  17.     SOE0 |= 0x01U;                   /* 使能 CSI00 输出 */
  18.     /* 配置 SI00 脚为输入模式 */
  19.     PMC0 &= 0x7FU;
  20.     PM0 |= 0x80U;
  21.     /* 配置 SO00 脚为输出模式 */
  22.     P0 |= 0x40U;
  23.     PM0 &= 0xBFU;
  24.     /* 配置 SCK00 脚为输出模式 */
  25.     PMC1 &= 0xFEU;
  26.     PM1 &= 0xFEU;
  27.     P1 |= 0x01U;
  28.    
  29. }
复制代码
这里已经有注释了。
大家如果想使用中断时,就把使能和关闭中断的部分代码去掉注释即可,我这里每次传输的一个8bit,所以我就不用中断发,把程序改成了非中断的。

以下是发送的代码:
  1. <blockquote>MD_STATUS R_CSI00_Send_Receive(uint8_t *txbuf, uint16_t txnum, uint8_t *rxbuf)
复制代码
OLED的驱动部分是用了网友的,把发送函数集成到里面。

上几张成果图:
这个是用示波器测的CLK时钟速率,实测最大能到10M
上git图,刷得挺快的。
源代码分享:
OLED.zip (162.4 KB, 下载次数: 46, 售价: 1 分芯积分)

OLED.zip (162.4 KB, 下载次数: 46, 售价: 1 分芯积分)

QQ截图20150910113402.png (233.52 KB, 下载次数: 2)

QQ截图20150910113402.png

最新回复

不错不错   详情 回复 发表于 2021-7-8 21:11

赞赏

1

查看全部赞赏

点赞 关注

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

点评

感谢支持  详情 回复 发表于 2015-9-10 17:39
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

4
 
不错。。。。。

点评

感谢版主大大的支持  详情 回复 发表于 2015-9-12 01:23
 
个人签名
分享铸就美好未来。。。




 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

5
 

感谢版主大大的支持
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

6
 
谢谢楼主,看了一下,讲的蛮详细的。
点亮OLED让我对这个板子又有了些兴趣。

点评

谢谢支持,去浪了一个星期,马上要继续DIY了  详情 回复 发表于 2015-9-23 22:02
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

7
 
wgsxsm 发表于 2015-9-21 22:26
谢谢楼主,看了一下,讲的蛮详细的。
点亮OLED让我对这个板子又有了些兴趣。

谢谢支持,去浪了一个星期,马上要继续DIY了
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
学习了

点评

谢谢支持  详情 回复 发表于 2021-7-6 21:03
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼主 资源是不是挂了了呀 下载一直超时

点评

没有呀,我试了下能下载的  详情 回复 发表于 2021-7-6 21:03
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

10
 

我改成不用中断发送接收时,总是卡在while(!CSIIF00);

用中断发送接收倒是没有问题。

 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

11
 
yy崔 发表于 2019-5-8 14:39 楼主 资源是不是挂了了呀 下载一直超时

没有呀,我试了下能下载的

 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

12
 

谢谢支持

 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

13
 

不错不错

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表