資源簡介
已通過測試,單片機能正確讀取sht30溫濕度數據,程序實現sht30周期模式下讀取數據,邏輯清晰,方便移植。已運用到項目中。

代碼片段和文件信息
/*
編譯版本:IAR?FOR?MSP430?V5.10
MCU:MSP430F5438
注:模擬IIC,單片機可正常讀取sht30溫濕度數據;程序僅僅測試了周期模式下讀取數據;
其他模式請參見sht30數據手冊時序圖,自行修改。
*/
#include?
#include?
#include?
/*宏定義,延時函數,參數為1時相應延時分別為1us和1ms*/
#define?CPU_F???????????????((double)16000000)
#define?delay_us(x)?????????__delay_cycles((long)(CPU_F?*?(double)x/1000000.0))
#define?delay_ms(x)?????????__delay_cycles((long)(CPU_F?*?(double)x/1000.0))
typedef?unsigned?char???uchar;??????????
typedef?unsigned?int????uint;???????????
typedef?unsigned?short??ushort;?????????
typedef?unsigned?long???ulong;??????????
typedef?uchar ????????u8;????????????
typedef?uint ????????u16;
typedef?ulong ????????u32;
void?IIC_Init(void);
void?IIC_Start(void);
void?IIC_Stop(void);
void?IIC_Ack(void);
void?IIC_NAck(void);
void?IIC_Send_Byte(u8?data);
u8?IIC_Wait_Ack(void?);
#define???SHT30W????0x88??????????//SHT30器件地址+寫操作使能
#define???SHT30R????0x89??????????//SHT30器件地址+讀操作使能
#define???SDA_OUT?????????(P4DIR?|=?BIT1)???//p4.1---SDA
#define???SDA_IN??????????(P4DIR?&=~BIT1)
#define???SDA_1???????????(P4OUT?|=?BIT1)
#define???SDA_0???????????(P4OUT?&=~BIT1)
#define???SDA_INPUT???????P4IN
#define???SDA?????????????BIT1
#define???SCL_1???????????(P4OUT?|=?BIT2)???//p4.2---SCL
#define???SCL_0???????????(P4OUT?&=~BIT2)
#define???SCL_IN??????????(P4DIR?&=~BIT2)
#define???SCL_OUT?????????(P4DIR?|=?BIT2)
u8?BUFt[6]={0};
u16?temp=0humi=0;
float?tem=0.0;
float?hum=0.0;
//時鐘初始化
void?Sysclk_Init(void)
{
????//1、時鐘初始化,這里你開發板使用的8mhz晶振
????P5SEL?????|=?BIT2+BIT3;?????????????????????????????????????//XT2端口選擇?0000?1100
????UCSCTL6???&=?~XT2OFF;???????????????????????????????????????//使能XT2=8MHZ
????UCSCTL3???|=?SELREF_2;??????????????????????????????????????//FLL模塊的參考時鐘源選擇REFO
????UCSCTL4???|=?SELA_5;????????????????????????????????????????//ACLK?=?XT2?=?8MHZ
????//測試晶振是否產生故障失效,并清除故障失效標志
????do
????{
????????UCSCTL7?&=?~(XT2OFFG?+?XT1LFOFFG?+?XT1HFOFFG?+?DCOFFG);?//清除XT2、XT1、DCO故障失效標志位?????????????????????????????????????????????????????????
????????SFRIFG1?&=?~OFIFG;??????????????????????????????????????//清除晶振故障失效中斷標志位?
????}while(SFRIFG1&OFIFG);??????????????????????????????????????//測試晶振故障失效中斷標志位?
????UCSCTL6???&=?~XT2DRIVE0;????????????????????????????????????//減少XT2驅動能力,降低功耗?
????UCSCTL4???|=?SELS_5?+?SELM_5?+SELA_5;???????????????????????//SMCLK?=?MCLK?=?ACLK?=?XT2?=?8MHZ
????//ACLK8分頻、SMCLK8分頻、MCLK不分頻
????UCSCTL5?=?DIVA__16?+?DIVS__16;???????????//所以初始化完成后系統時鐘:ACLK=SMCLK=1MHZ;MCLK=8MHZ
}
//端口初始化
void?IIC_Init(void)
{
????SCL_OUT;????????????//SCL管腳為輸出
????SDA_OUT;????????????//SDA管腳為輸出
????SCL_1;
????SDA_1;
}
//開始條件
void?IIC_Start(void)????????//scl為高電平期間sda產生一個下降沿
{???
????SDA_OUT;??????//sda線輸出
????SDA_1; ?? ??
????SCL_1;
????delay_us(20);
????SDA_0;??????????//START:when?CLK?is?highDATA?change?form?high?to?low?
????delay_us(20);
????SCL_0;??????????//鉗住I2C總線,準備發送或接收數據
????delay_us(20);
}
//停
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????924309??2018-08-08?09:18??msp430f5438模擬iic讀取sht30\SHT3x_DIS.pdf
?????文件??????530766??2018-08-01?11:58??msp430f5438模擬iic讀取sht30\SHT3x_Sample_Code.pdf
?????文件????????7169??2018-08-08?16:50??msp430f5438模擬iic讀取sht30\test_sht30.c
?????目錄???????????0??2018-08-08?16:52??msp430f5438模擬iic讀取sht30\
- 上一篇:HYPODD(雙差地震定位
- 下一篇:電路與模擬電子技術基礎第2版課后答案
評論
共有 條評論