ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TMS320F28335 硬件IIC 驱动0.96 inch OLED显示屏 移植过程复盘

2021-07-28 12:31:09  阅读:453  来源: 互联网

标签:硬件 TI TMS320F28335 发送 OLED IIC 寄存器


最近尝试从32转向DSP,也算是试验一下自己的硬件学习方法论,从淘宝采购了TMS320F28335 硬件IIC 驱动0.96 inch OLED显示屏。
分步骤走:
1、先看TMS320F28335的硬件IIC寄存器流程:
与32(此处指STM32、GD32)的IIC库函数流程有一些不同,DSP的操作都是寄存器操作,所以单独的发送过程与配置过程是没有解耦的,这也使得整个寄存器配置的时序相对而言有些反逻辑直觉。
(1)首先摆一张IIC的结构图:
图1 28335 IIC结构图
图1 IIC发送接收结构

(2)可以看到要发送的数据先到DXR寄存器,然后被自动加载到移位寄存器XSR,因此相对应的发送操作就是顺序向DXR寄存器写入字节数据,这张图没有体现出来的是I2CSAR寄存器是控制本次发送数据的总字节数的寄存器,因此在写入实际数据到DXR之前,需要先将数据长度写入SAR寄存器。
SAR寄存器
图2 SAR寄存器定义
(3)然后在实际发送数据前需要声明此时发送的从器件地址,也就是I2C_SLAVE_ADDRESS,这里对应OLED的数据手册,7位地址为0x3C,与模拟IIC不同,模拟IIC需要自己处理7位地址时的第8个bit,也就是读/写,而这里是通过控制模式控制寄存器I2CMDR来确定读写,因此可以直接写入7位地址给28335的OAR寄存器,中间记得查询状态寄存器STA.BB检查一下i2c忙不忙。
TI源码 IIC发送数据封装

图3 TI源码 IIC发送数据封装
(4)这里TI的源程序做了一层封装,将一次发送所需的数据打包成了结构体I2CMSG,方便函数接口设置以及适应单次不同长度数据的发送要求,我则对其做了部分更改,就直接输入地址+要发送的短帧数据作为形参,这样省事一些,实际上TI的结构体允许最大

(5)一点学艺不精的小困惑
最开始调试出现的问题在于,只有第一个字节有时钟并且发出去了,后面SCLK被强制拉低,导致SDA后面的数据都不带时钟,因此返回的状态值读出来一直是0x5555,根据TI源程序的定义,这个是I2C_STP_NOT_READY_ERROR
返回的状态
图4 返回的状态值

然后先后排查了硬件连线,短路,从机地址,最后单步debug中,给每句的返回值都加了断点,发现逐语句调试时,通信都正常,一旦断点放开,返回值马上就变成0x5555,于是我猜是从设备的处理速度不够快,于是看了一下电气特性表,在每次访问后面每句都加了3ms的延时,这样才正常工作。
延时示例
图5 延时示例

2、LOED驱动
这里OLED我是直接用的模块附送的例程,具体没有去深究,看了一下主要还是点阵控制,循环点亮和清除,驱动芯片是SSD1306,暂时先这样,能显示了就OK。
唯一跟单片机相关的一点是,因为显示需要事先存储成点阵数组形式,这种比较耗资源,所以需要更改cmd文件给.text扩容,我看了一下cmd文件基本上就把RAM2赋给了RAM1,空间差不多就够了。
F28335 cmd更改
图6 28335 cmd更改以存储字符点阵

3、总结
整个移植用了两天,其实改代码还好,主要是看文档理解整个过程,以及跟上面提到的IIC的发送延时作斗争,还是算是完成了基本显示功能。

4、资源链接
整个简易的工程我打包放到了CSDN下载页面,中文注释,欢迎新入门的小伙伴粗略了解整个28335硬件IIC的控制流程。
下载资源限制了积分的设定,固定为5分,绝对物有所值,连接审核完成后放出。

标签:硬件,TI,TMS320F28335,发送,OLED,IIC,寄存器
来源: https://blog.csdn.net/qianzilu/article/details/119176208

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有