肝了这么多天,查了很多资料,逛了不少论坛终于把stm32f103的硬件I2C写出来了,就先做个记录。
开发板是自己画的兼容原子精英两块板子,型号是f103zet6。主从用的都是硬件I2C,用的是st官方例程,感谢,同时官方还给出了其他例如定时器,CAN通信的例程。地址先放在下面:
https://www.st.com/content/st_com/en/products/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus/stm32-mainstream-mcus/stm32f1-series/stm32f103/stm32f103ze.html#sw-tools-scroll
官方例程并没有像网上大多数代码在IIC中断里面调用库函数来发,而是采用判断寄存器的值来处理数据的收发等,所以在阅读官方的的代码前最好准备stm32参考手册,主要就是SR1,SR2,这两个寄存器。
在官方例程里面默认是主机的读写,我做的是主机读取从机的内容。当然,简单改下就可以实现主机向从机写数据。
主机先使能中断和方向、地址。