首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于STM32 I2C的TMP101温度传感器的C源码

基于STM32 I2C的TMP101温度传感器的C源码

函数 I2C_CheckEvent  () 这个典型的用法是
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
如果经常死在这里面那你就要注意如下的问题:
  • GPIO口的模式一定要是GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; // 开漏复用功能
  • 保证的你的接线正确且速度合适。比如:SCL SDA要有上拉电阻 4K7是典型值,100K的速度最好
  • I2C_Send7bitAddress()发送要是8位数 例如你的7位地址是1001001 你不能写成0X49正确的是0x92或者是0x93最后的读写位是0(写)还是1(读)不受你添地址的影响,仅受第3个参数I2C_Direction_Transmitter或I2C_Direction_Receiver的影响。这点我是用了示波器才看出来的 呵呵~不知道是谁把示波器CH2通道打开了反相........我差点就怀疑STM32 硬件有问题.....又出现了一些小曲折 唉~
  • 最后细心写程序 比如 I2C_Send7bitAddress(I2C1, 0x92, I2C_Direction_Receiver);
    while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));这样话如论如何你都会死在这里的。反正我是出了不少这种低级错误的。

我用的是3.0的库 这句是I2C_Send7bitAddress(I2C1,  0xFF, I2C_Direction_Transmitter);
红线是起始位,读写位不受0XFF控制的。

SCL SDA 要有上拉电阻,VCC与GND 间最好接个104电容滤波。

串口出温度。
继承事业,薪火相传
返回列表