
DS1307是一款日历芯片,其有比较精准的日历时钟,通过外接电池来保持其不间断计时,从而达到随时可以获得当前的日期和时间。我是利用一块多余的时钟PCB板,截取其中的部分电路,自行制作了一块包含DS1307芯片、AT24C32EPROM芯片以及DHT11温湿度传感器的实验装置。 I2C的配置如下: 对应开发板的引脚为PB6和PB7: 用CubeMX生成基本代码后,将之前在C031开发板上测试通过的代码移植过来,编译下载后,测试时竟然出现数据传输不稳定的现象,于是便使用逻辑分析仪抓取时序图来分析: 从时序图上可以看出,SCL的高电平时序准确,为5微秒,而低电平的时序则显著较慢,竟达9微秒之多: 有时DS1307甚至还没有回应,导致I2C通讯失败。 经过反复测试和分析,决定添加上拉电阻试试。添加了两颗上拉电阻后,I2C通讯正常了,读写操作都能顺利完成,从抓取的时序图上看,SCL高电平为4微秒多,低电平为6微秒多,与标准的5微秒相差不大。 由此看来,I2C通讯时,其SCL和SDA引脚的上拉电阻非常重要,否则就有可能会影响了其正常通讯。 下图为测试的动画,显示的时钟计秒是由单片机的定时器完成,计秒超过59时读取一次DS1307芯片的日历时间数据,并更新屏幕显示: |
【STM32C0评测】+NUCLEO-C071 UART测试
【STM32C0评测】C071:加个PWM
NUCLEO-C071RB评测1_GPIO测试
【STM32C0评测】C071:GPIO+定时器+串口
STM32C0评测】C071开箱
NUCLEO-C071RB评测4_模拟和硬件SPI驱动3.5寸TFT彩屏
NUCLEO-C071RB评测3_PWM测试
【STM32C0评测】+NUCLEO-C071 PWM输出测试
【STM32C0测评】Nucleo-C092开发板功耗测试
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件IIC)