资源简介
SMBUS两线制协议 模拟IIC main函数里面先初始化 然后直接调用ReadTemperature函数就可以了
代码片段和文件信息
/*******************************************************************************
* 文件名 : mlx90614.c
* 作 者 :
* 版 本 :
* 日 期 : 2015-11-25
* 描 述 : mlx90614函数
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include “mlx90614.h“
#include “stm32f10x.h“
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define ACK 0
#define NACK 1
#define SA 0x00 //Slave address 默认为0x5a
#define RAM_ACCESS 0x00 //RAM access command
#define EEPROM_ACCESS 0x20 //EEPROM access command
#define RAM_TOBJ1 0x07 //To1 address in the eeprom
#define SMBUS_PORT GPIOB
#define SMBUS_SCK GPIO_Pin_6
#define SMBUS_SDA GPIO_Pin_7
#define RCC_APB2Periph_SMBUS_PORT RCC_APB2Periph_GPIOB
#define SMBUS_SCK_H() SMBUS_PORT->BSRR = SMBUS_SCK //置高
#define SMBUS_SCK_L() SMBUS_PORT->BRR = SMBUS_SCK //置低
#define SMBUS_SDA_H() SMBUS_PORT->BSRR = SMBUS_SDA
#define SMBUS_SDA_L() SMBUS_PORT->BRR = SMBUS_SDA
#define SMBUS_SDA_PIN() SMBUS_PORT->IDR & SMBUS_SDA //读取引脚电平
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/*******************************************************************************
* Function Name : SMBus_StartBit
* Description : Generate START condition on SMBus
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SMBus_StartBit(void)
{
SMBUS_SDA_H(); // Set SDA line
SMBus_Delay(5); // Wait a few microseconds
SMBUS_SCK_H(); // Set SCL line
SMBus_Delay(5); // Generate bus free time between Stop
SMBUS_SDA_L(); // Clear SDA line
SMBus_Delay(5); // Hold time after (Repeated) Start
// Condition. After this period the first clock is generated.
//(Thd:sta=4.0us min)
SMBUS_SCK_L(); // Clear SCL line
SMBus_Delay(5); // Wait a few microseconds
}
/*******************************************************************************
* Function Name : SMBus_StopBit
* Description : Generate STOP condition on SMBus
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SMBus_StopBit(void)
{
SMBUS_SCK_L(); // Clear SCL line
SMBus_Delay(5); // Wait a few microseconds
SMBUS_SDA_L(); // Clear SDA line
SMBus_Delay(5); // Wait a few microseconds
SMBUS_SCK_H(); // Set SCL line
SMBus_Delay(5); // Stop condition setup time(Tsu:sto=4.0us min)
SMBUS_SDA_H(); // Set SDA line
}
/*********************************************************************
相关资源
- mlx90614红外无接触测温测试通过.rar
- 基于stm32f4的非接触式红外温度传感器
- STM32驱动max30102和MLX90614程序
- STC12C5A60S2与MLX90614红外温度传感器程序
- stm32f1对MLX90614ESF读取数据
- MLX90614红外测温 STM32完整工程文件
- MLX90614驱动程序
- 基于51单片机的MLX90614红外测温仪实验
- STM8红外温度传感器MLX90614源代码
- 额温枪电路设计原理图(附赠官方M
- mlx90614非接触式红外传感器温度采集
- STM32F4+MLX90614
- MLX90614和STC12C5604AD的SMBusPWM;_通信
评论
共有 条评论