采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12
Key1为PA0,Key2为PC13
KEIL5下载配置有FLASH与SRAM
收发共用一个缓冲区
I2C使用DMA与AT24C02通信,Tx中,利用DMA传输数据,但是起始位,设备地址,读写地址采用的是阻塞式发送,数据则是采用DMA传输;注意点:采用DMA发送应该等到BTF(发送寄存器空,移位寄存器也为空)事件后设置停止位,不可以在DMA传输完成中断中设置停止位,因为此时正在发送最后一个字节,故开启BTF中断(I2C_EV),在该中断服务函数中发送停止位并关闭I2C的DMA传输使能。
Rx中,利用DMA传输数据,但是起始位,设备地址,AT24C02写入地址采用的是阻塞式发送,数据则是采用DMA传输;注意点:在DMA传输完成中断中发送停止位,并关闭I2C的DMA传输使能,I2C主接收,写读转换中再次发送起始位前,第一次发送设备地址字节后,应检测BTF
仿printf写入发送缓冲区前,应检查上一次通信是否结束
1