之前已用过的所有的I2C从机都能从识别7位ADDR后面的那个bit(1-读,0-写)……
但是现在用到STM32的I2C从机模式,发现收ADDR时,只告诉你ADDR发生了匹配,却没告诉你ADDR这7个bit以及最后的那个bit到底放到哪里了……
想想应该是DR寄存器吧,却在DR寄存器的描述后面找到一样:“注:在从模式下,地址不会被拷贝进数据寄存器DR;”
再看一下库的例程,不管是DMA还是中断方式,一但ADDR匹配,就要同时初始化接收和发送相关的缓冲区、变量……
搜了一下本版,这才发现STM32的I2C的奇特之处……我怀疑设计这个I2C模块的ST工程师脑袋肯定是被门夹过的:lol |