这是写入,发送,和读状态函数
/************向LMH6401 中写入一个字节*************************1*/
void W_LMH6401_byte(unsigned char date)
{
unsigned char temp;
unsigned char i;
temp = date;
for (i = 0; i < 8; i++) {
SCK_0 ;
if((temp&0x80)==0x80)
{ MOSI_1; }
else { MOSI_0; }
SCK_1 ;
temp <<= 1;
}
MOSI_0;
}
/********************读取LMH6401 一个字节***********************2*/
unsigned char R_LMH6401_byte(void)
{
unsigned char temp=0;
unsigned char i,SDI;
for(i = 0; i < 8; i++) {
temp <<= 1;
SCK_0 ;
SDI = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);
if(SDI) {temp++; }
// else {printf("
output low data
");}
SCK_1 ;
}
return(temp);
}
/*******************读取LMH6401 状态**************************3*/
unsigned char LMH6401_status(u8 addr)
{
unsigned char status;
DF_CS_0; //片选打开
delayus(10);
W_LMH6401_byte(addr); //D7H是读取状态的命令字
status = R_LMH6401_byte(); //读取状态字节
DF_CS_1; //片选关闭
delay(500);
return status;
}
下面是读写的操作时序图
QQ截图20170616095637.png (129.04 KB, 下载次数: 0)
下载附件
2017-6-16 10:05 上传
发送00,应该返回03,但是毫无反应无返回,发送其他指令也是
还有一个问题就是,如何发送7位地址,请各位帮忙解答一下
先发高位,后发低位,数据为0x01
一周热门 更多>