|
硬件IIC配置如下: main.c文件 #define SLAVE_ADDR 0xA0 //该从机地址 #define I2CSPEED 100000 //i2c速度 /******************************IIC从机初始化******************************************************/ void IIC_INIT() { I2C_Init(I2CSPEED, SLAVE_ADDR , I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);//I2C初始化 I2C_ITConfig((I2C_IT_TypeDef)(I2C_IT_ERR | I2C_IT_EVT | I2C_IT_BUF), ENABLE); //100K速率,16位自身地址,占空比=2,应答当前字节,从模式地址长度 //8位输入时钟频率 //I2C_ITConfig((I2C_IT_TypeDef)(I2C_IT_ERR | I2C_IT_EVT | I2C_IT_BUF), ENABLE); //I2C_Cmd(ENABLE);//开启IIC } int main(void) { CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟初始化(不分频)时钟为1分频16M 2分频8M IIC_INIT();//iic初始化 enableInterrupts();//中断使能开启 while(1) { ; } } stm8sit.c u8 count = 0; INTERRUPT_HANDLER(I2C_IRQHandler, 19) { /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ //接收发送 //printf("DHT11!\r\n"); /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ //接收发送 u8 temp = 0; if (I2C->SR1&0x02)//地址已经匹配(读SR1,SR3清除该位) { I2C->SR3&0x07; ++count; if(count == 1) { I2C->DR = 0x11;//主机第一次读该从机,该从机发送0x11 } else if(count == 2) { I2C->DR = 0x22;//主机第二次读该从机,该从机发送0x22 count = 0; } } else if ((I2C->SR1&0x84)&&(I2C->SR3&0x04))//数据字节传送完 { //temp = 0xA5; //假设这里发送0xA5 } else if ((I2C->SR1&0x40)&&(0 == (I2C->SR3&0x04)))//接收时数据寄存器 { temp = I2C->DR; //读取数据寄存器 } else if (I2C->SR1&0x10)//检测到停止位 { I2C->CR2 = I2C->CR2;//清除停止位 } //错误处理 if (I2C->SR2&0x01)//总线错误 { I2C->SR2 &= ~0x01;//清零 } else if(I2C->SR2&0x02)//仲裁失败 { I2C->SR2 &= ~0x02;//清零 } else if(I2C->SR2&0x04)//应答失败 { I2C->SR2 &= ~0x04;//清零 } else if(I2C->SR2&0x08)//上溢、下溢 { I2C->SR2 &= ~0x08;//清零 } return; } 主机读取步骤见附件 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版