資源簡介
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
}
/*********************************************************************
評論
共有 條評論