闲来没事,正好二姨家有这个活动参加,于是就开始干了。刚好家里有玩游戏的手柄, 还有OLED显示屏和STM32的板子,借此机会来该装下我的手柄。图1是改装后的效果图 图1 于是打算在手柄上加一个OLED屏,用来显示当前的工作状态,也可以输入字符。之前的 项目也用到过oled显示屏,0.96寸,分辨率为128*64,通信方式有spi,iic,这里采用spi的 通信方式 下面简单介绍下OLED屏,其驱动IC为SSD1306,具有内部升压功能。 尺寸:0.96寸 分辨率:128x64 驱动电压:2.8-3.3V(带自动升压) 驱动IC:SSD1306 支持接口:8位并口,3/4线SPI,I2C 颜色:蓝光 特点:全视角,高对比度,低功耗,阳光下可见,其实物可见图2 图2 0.96OLED实物 实物尺寸图和引脚定义如图3所示
图3 实物尺寸和引脚定义 下面简单介绍下0.96OLED屏的驱动原理图如图4所示,
图4 OLED显示屏驱动原理
主要通过SPI的通信方式和主MCU进行通信的,可以电池供电,通信方式的 选择可参考图5,采用四线的SPI通信,所以BS0/1/2都和地相连。
图5 通信方式的选择 下面介绍STM32电路板,该电路主要有主MCU,时钟,电源,稳压,程序下 载口等组成,其空板可见图6
图6 该板子可以采用USB供电也可以电池供电,稳压电路和充电管理如图7所示
图7 将STM32电路板焊好,实物如图8所示
图8 焊接好的STM32板子
该MCU的型号是STM32F103C8T6,采用3.3V供电,其外部引脚定义如图9所示:
图9 STM32F103C8T6 引脚定义
其内部逻辑框图如图10所示:
图10内部逻辑框图
该开发环境是keil,取模软件为PCtoLCD2002.EXE。打开相应的图片可以 得到相应的数据。将焊好的板子通上电测试,烧录程序,跑的是之前的 工程里面的代码,时间上稍微有点久远啊。O(∩_∩)O哈哈~, OLED显示效果如图11所示:
图11OLED显示效果 由于没有用BQ24073,C7用一个0R电阻代替,VBUS直接接在V4上
没有用到的外围器件焊盘都用飞线引出来,以后接在手柄的焊盘上,具体如图12所示:
图12 下面将手柄的内部构造展现出来,如图13
图13,手柄内部结构 手柄的电路板,在除去他的主控芯片的时候不小心把板子弄断了, 后用502重新粘上了,如图14所示
图14 用飞线把STM32电路板和手柄电路板连起来连上后打上胶固定,如图15所示
图15 线飞完测试无误之后把电路板装在手柄里面,还好飞线的时候线都留得很长,放进去 之后还可以绕一下,如图16所示
把JTAG调试口用三根线飞出来。没错,就是三根,SWD_CLK,SWD_IO, Vcc,因为J-Link和 手柄插在同一台电脑上的,所以地线就省了,如图17所示:
图17
装好之后的样子,如图18所示 图18
芯片: STM32F103C8T6, 手柄与芯片连接定义:
L1 => GPIOA_6
L2 => GPIOA_7
R1 => GPIOB_6
R2 => GPIOA_0
Key1 => GPIOB_5
Key2 => GPIOB_4
Key3 => GPIOA_15
Key4 => GPIOA_4
Left => GPIOB_1
Up => GPIOC_14
Right => GPIOB_0
Down => GPIOB_10
Start => GPIOC_15
Select => GPIOB_7
|