简介
由于此次DIY还设计到SSD1306的屏幕显示部分, 那么本篇文章我们要完成的是通过CUBE MX生成工程,然后配置好串口输出以及I2C通讯,用于驱动SSD1306和INA219.
步骤如下
1- 系统配置使用外部时钟 8MHZ
2- 配置Debug使用 Serial wire
3- 配置串口, 建议配置成USART2, 这样的话可以直接使用STLink进行通讯。
官方的手册说明如下:
4- 重写Fput char, 和配置串口输出。首先, 需要在项目的属性设置中,勾选newlibe-nano的支持, 否则的话就算重写了fputc或者io_putc,也一样没有任何输出。
然后是具体的Fputc或者ioputc
int __io_putchar(int ch) { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch; }
5- 下载和测试串口输出。
while (1) { printf("Hello world\r\n"); HAL_Delay(1000); }
在主程序的While循环中加上打印函数。 然后串口助手进行测试
正确无误, 接下来我们来点亮SSD1306
SSD1306驱动
这次资料提供的SSD1315的并且是软件i2C, 开玩笑,真男人只用硬件I2C。 之前我记得我在论坛里分享过一个SSD1306的驱动。直接拿过来用(可以直接驱动, 两个库兼容起来还是很好的)。
1- 先把他拷贝到Drivers下
2- 配置Includes
3- 修改SSD1306.H中的Hal函数引用为当前开发板的, 然后修改地址为 #define SSD1306_I2C_ADDR 0x78
4- 配置I2C, 根据原理图配置I2C1
Cube MX 配置
5- 进行连接测试
搞定! 接下来就是使用I2C来读取INA219了。