#include "lmh6401.h"
#include "delay.h"
void LMH_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIO时钟
GPIO_InitStructure.GPIO_Pin = CS | SCK | MOSI;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
GPIO_InitStructure.GPIO_Pin = MISO;//
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
LMH_CS = 1;
LMH_SCK = 0;
LMH_MOSI = 0;
}
u8 LMH_SendData(u8 Addre ,u8 Data)
{
u8 rxd;
u8 i;
delay_us(2);
LMH_CS =0;
for(i=0; i<8;i++)
{
LMH_MOSI = Addre>>7;
Addre <<= 1;
delay_us(2);
LMH_SCK = 1;
delay_us(2);
LMH_SCK = 0;
}
for(i=0;i<8;i++)
{
LMH_MOSI = Data>>7;
Data <<= 1;
delay_us(2);
LMH_SCK = 1;
rxd = (rxd<<1) + LMH_MISO();
delay_us(2);
LMH_SCK = 0;
}
LMH_CS = 1;
delay_us(2);
return rxd;
}
u8 LMH_RevID(void)
{
u8 id;
id = LMH_SendData(Revision_ID,0);
return id;
}
u8 LMH_ProID(void)
{
u8 id;
id = LMH_SendData(Product_ID,0);
return id;
}
u8 LMH_Gain(u8 gain)
{
u8 g;
gain = gain&0x3F;
g = LMH_SendData(GainControl,gain);
return g;
}
评论0