[mw_shl_code=c,true]#define HSHCAL_CTL1 0x1B //控制工作模式寄存器地址
#define HSHCAL_SADRW (0x18<<1 & 0xFE) //写从机地址
#define HSHCAL_SADRR (0x18<<1 | 0x01) //读从机地址
//读一个字节函数
u8 HSHCAL_ReadOneByte(u8 ReadAddr)
{ [/mw_shl_code]
[mw_shl_code=c,true] u8 temp=0,m=2; [/mw_shl_code]
[mw_shl_code=c,true] IIC_Start();
IIC_Send_Byte(HSHCAL_SADRW);
m=IIC_Wait_Ack();
LCD_ShowNum(90,30,m,2,16);
IIC_Send_Byte(ReadAddr);
m=IIC_Wait_Ack();
LCD_ShowNum(90,50,m,2,16);
IIC_Start();
IIC_Send_Byte(HSHCAL_SADRR);
m=IIC_Wait_Ack();
LCD_ShowNum(90,70,m,2,16);
temp=IIC_Read_Byte(0);
IIC_Stop();//?ú?ú????????????
return temp;
}
//写一个字节函数
void HSHCAL_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{
IIC_Start();
IIC_Send_Byte(HSHCAL_SADRW);
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr);
IIC_Wait_Ack();
IIC_Send_Byte(DataToWrite);
IIC_Wait_Ack();
IIC_Stop();
delay_ms(10);
}
void Hshcal_SensorInit() //Init sensor
{
//0111 0000 High accuracy 10Hz Normal state
HSHCAL_WriteOneByte(HSHCAL_CTL1,0x70);
delay_ms(20);
}
[/mw_shl_code]
int main(void)
{
u8 key;
NVIC_Configuration();
delay_init();
uart_init(9600);
LED_Init();
LCD_Init();
KEY_Init();
IIC_Init();
Hshcal_SensorInit();
key=HSHCAL_ReadOneByte(0X0E);
LCD_ShowNum(90,10,key,2,16);
}
上面的代码读传感器数据总是错误的,不管传什么地址,返回的数据都是一样的且结果一直不变,检查发现
[mw_shl_code=c,true]m=IIC_Wait_Ack();返回的结果一直都是1,我检查了硬件,连接没发现问题,请问这是什么原因导致的,代码有问题吗?纠结中求解答。[/mw_shl_code] |