【求助and分享】我申请的GoKit3,STM32底板的OLED CS可能有问题
本帖最后由 SmilesVan 于 2017-6-6 18:26 编辑之前一直困惑OLED的问题,最近终于有了一点进展,但又遇到一个问题,汇报如下:
问题:我申请的GoKit3,STM32底板的OLED CS可能有问题
现象:通过万用表测试底板“CS/D10”与MCU STM32F103C8T6的PA4管脚不通(如下方过程详述)!!!
经过查阅资料,理论上应该是通的!通则不痛!我都折腾好久了,好痛苦,有人管吗?!!!
详述:
【注】配图红色标记皆为OLED相关,看过分享的坛友可以略微举一反三GoKit3硬件周边设备的GPIO PIN定义,我已经验证过了,PS我也是硬件小白
1.通过文档 《gokit3功能板原理图V3.0》 终于看懂了点硬件图 ;P
下图“应该”代表各个**设备的连接,中间就是“连接定义”,不信看下下图
下图“连接定义”,右边就代表了“底板”的Arduino接口定义
下图就是Arduino接口定义了
想知道OLED对于MCU的GPIO PIN定义,还得需要看下图硬件的丝印
2.开始研究GoKit3与OLED结合
配合下两图微雪的0.96寸蓝黄双色OLED,以及GoKit3功能版的OLED硬件接口
我终于懂了点:0.96寸OLED 通过 OLED接口 连接 功能板,功能板 通过 Arduino接口 与 MCU连接
问题来了,底板丝印的Arduino接口 D10-D13,无法还是无法判断 GPIO 的PIN定义!!!
只能看出D8对应PB6、D9对应的PB11!!!
于是平时的各种文档下载,各种搜肠刮肚派上用场:
查阅底板MCU的datasheet,对照硬件图,发现STM32F103C8T6封装为LQFP 48(这个很重要!坛友!后续的万用表测量用得到!)
继续查MCU引脚定义,明确了D8/PB6、D9/PB11,见下两图
困惑来了!困惑来了!怎么确认D10-D13引脚编号和引脚名称呢?答案见下两图
3.狼来了
问题来了!问题来了!是SPI1对应的引脚?还是SPI2对应的引脚?
【注】Arduino接口定义中的SCK、CS,对应的就是MCU引脚功能SPI_NSS(片选)、SPI_SCK(时钟),MOSI、MISO,主从进出,尽管我也不甚了解,问问度娘就知道了对应没错!
经过万用表测量,D10-D13对应的就是SPI1的MCU引脚,而用万用表测量就需要LQFP 48和硬件实物对照方位和引脚编号了(蓝色标记)
此时是一口老血接着一口老血啊!用万用表测试Arduino接口的D10和MCU的PA4居然不通啊!居然不通啊!
昨天晚上测量好几次,今天早上起床第一件事又测量好几次!就是不通啊!不通啊!
而D11、D12、D13都与对应MCU引脚的电阻显示为一点点电阻!通的啊!通的啊!
虽然通过此一遭,貌似懂了点硬件,但是D10和PA4不通,我TMD还能干点什么吗?!!
谨以此文纪念这两天的心路历程,也盼早日机智云的社区更上一层楼!
TMD,程序员玩死程序员!
附上微雪0.96寸蓝黄双色OLED + Open103R,排除OLED故障嫌疑
为什么做万用表测量,就是之前用微雪OLED样例代码,做过测试,OLED没反应,直觉把我引导向硬件测量,最起码验证了D11、D12、D13等引脚都是对的!
测试硬件环境,也是 底板+功能板+oled ,底板+排线+oled,两种都测试过
下文是OLED样例代码中测试SPI1,还是SPI2,做的GPIO定义,仅供参考
// SPI1
#define SSD1306_CS_PIN GPIO_Pin_4
#define SSD1306_CLK_PIN GPIO_Pin_5
#define SSD1306_DIN_PIN GPIO_Pin_7
#define SSD1306_CS_GPIO GPIOA
#define SSD1306_CLK_GPIO GPIOA
#define SSD1306_DIN_GPIO GPIOA
// SPI2
/*
#define SSD1306_CS_PIN GPIO_Pin_12
#define SSD1306_CLK_PIN GPIO_Pin_13
#define SSD1306_DIN_PIN GPIO_Pin_15
#define SSD1306_CS_GPIO GPIOB
#define SSD1306_CLK_GPIO GPIOB
#define SSD1306_DIN_GPIO GPIOB
*/
//
#define SSD1306_RES_PIN GPIO_Pin_6
#define SSD1306_DC_PIN GPIO_Pin_11
#define SSD1306_RES_GPIO GPIOB
#define SSD1306_DC_GPIO GPIOB
微雪淘宝店(喷子别说我是拖!我只是个过气程序员偶遇GoKit3而已!)
https://waveshare.taobao.com/
店内搜索oled
0.96、0.95、1.3都挺好,在Open103R开发板也测试过了,只期望坛友跟我一样在GoKit3都能玩好! 不错,感谢您的分享 bigfanofloT 发表于 2017-6-6 15:16
不错,感谢您的分享
(⊙o⊙)…
管理员,你的鼓励,还是没有换来问题的解决方案啊!
是我的思路和判断错了?
还是我申请的GoKit3底板接口D10和MCU PA4引脚不通,有故障?
我需要的是答案啊!拜求GoKit3的硬件工程师解答一下哦! 本帖最后由 bigfanofloT 于 2017-6-6 18:07 编辑
SmilesVan 发表于 2017-6-6 15:37
(⊙o⊙)…
管理员,你的鼓励,还是没有换来问题的解决方案啊!
Gokit用的是LQFP48封装的STM32F103C8T6,Gokit STM32底板原理图置顶帖有,注意版本哦 本帖最后由 SmilesVan 于 2017-7-10 19:07 编辑
先公布答案:GoKit3 OLED接口,SPI模式下,外接微雪OLED 0.96寸 SSD1306驱动器的GPIO定义如下,其他类推:
-----------------------------------------------------------
#define SSD1306_CS_PIN GPIO_Pin_15
#define SSD1306_CLK_PIN GPIO_Pin_5
#define SSD1306_DIN_PIN GPIO_Pin_7
#define SSD1306_CS_GPIO GPIOA
#define SSD1306_CLK_GPIO GPIOA
#define SSD1306_DIN_GPIO GPIOA
#define SSD1306_RES_PIN GPIO_Pin_6
#define SSD1306_DC_PIN GPIO_Pin_11
#define SSD1306_RES_GPIO GPIOB
#define SSD1306_DC_GPIO GPIOB
-----------------------------------------------------------
总结:
题主流程思路没有太大问题,之前一直没解决,主要原因是【资料不细致!!!】
底板CS/D10与STM32F103C8T6的引脚链接,查阅STM32F103C8T6的数据手册不细致(搜索SPI1_NSS有PA4、PA15两个引脚,之前只看到了PA4,而PA15主功能是JDTI,复用为SPI1_NSS,所以还有“JTAG引脚复用”的注意事项,可以百度一下),用万用表测量不足!
后来还是万能的淘宝收了一套GoKit2的PCB,初次接触Altium Designer,查阅了底板的线路才发现PA15的连接!!!并用万用表测量得解!!!
后来对了一个之前收藏的代码如下!引脚定义一致!验证完毕!自取不谢!完毕!!!
http://www.eeboard.com/bbs/thread-44628-1-1.html
楼主在吗?想和你交留一下程序问题的一些探讨。我的QQ695029318,你的呢 顶下,留个脚印。
页:
[1]