STMCU小助手
发布时间:2022-2-11 19:33
|
一. 前言 某客户反映使用 STM8L 的 IIC 的库的 DEMO,master 和 slave 通信,使用 IIC1 的端口 PC0 与 PC1,并分别上拉接 4.7k 的电阻至 3.3V,主机的 SCL 与从机的 SCL 相连,SDA 也一样,但是 slave 一直没有应答,想不明白原因,波形客户看了认为没有问题,就是没有应答,不知道原因是什么,IIC 速度给的都是 100K。 ; X1 ?8 L2 e; Y# V0 y1 I 二.问题产生环境 % T. Q% G% K* _! w+ {+ ] 详细了解了客户的使用试验环境,由于他们手上的资源有限,用的是两块 STM8l152C6T6 的 discovery板子,而非官方代码使用的 STM8L1526-EVAL 硬件板。slave address 0x30;master address 0xa0。波形如下: ( h' B' D* U3 G0 L6 x , F) _8 o- Y* P; _. `$ U& p- ]- p
使用的代码环境如下:+ N4 o7 ~2 h0 _7 D" A1 t# \4 t" J + S2 F* a. E9 X
三. 问题分析 # E7 A+ Q. D" u$ \! m7 t* a/ p 仔细观察上图的黄色的时钟线,三角波很像是电容的充放电功能波形。并不是一个好的 IIC 协议波形。正好手头上有 STM8L1526-EVAL 硬件板,下载程序试验了下,能够运行正确。
所以接下来的就变的很简单。比较 STM8l152C6T6 的 discovery 和 STM8L1526-EVAL 的区别。一看电路图其实就明白了,) Z6 V; i/ @$ k, ^ 1 c9 _& x8 C$ L" a4 j
对于 PC0 引脚,由于 Discovery 板子没有外接,所以需要自己添加个 4.7K 的傻瓜你拉电阻至 3.3V。对于 PC1 引脚,已经设置了外部上拉,但是和我们常规的经典电路不一样,这儿多了个 C25 的电容。于是果断去除该 C25 电容,再此试验。顺利通过。 . k* Z2 M( N! ? ^7 g+ N* O / e; W* u6 @$ ^ |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版