int SCCB_ReadByte_one(uint8 *pBuffer, uint16 length, uint8 ReadAddress) { if(!SCCB_Start()) { return 0; } SCCB_SendByte( DEV_ADR ); /* 器件地址 */ if( !SCCB_WaitAck() ) { SCCB_Stop(); return 0; } SCCB_SendByte( ReadAddress ); /* 设置低起始地址 */ SCCB_WaitAck(); SCCB_Stop(); if(!SCCB_Start()) { return 0; } SCCB_SendByte( DEV_ADR + 1 ); /* 器件地址 */ if(!SCCB_WaitAck()) { SCCB_Stop(); return 0; } while(length) { *pBuffer = SCCB_ReceiveByte(); if(length == 1) { SCCB_NoAck(); } else { SCCB_Ack(); } pBuffer++; length--; } SCCB_Stop(); return 1; }
//////////////////////////// //Function:read MTpM031 reg //return: 0=success; 1=fail uchar rdMT9M031Reg(uchar regID_h, uchar regID_l, uchar length, uchar *regDat_h, uchar *regDat_l) { //ͨ¹ýд²Ù×÷ÉèÖüĴæÆ÷µØÖ· startSCCB(); if(SCCBwriteByte(0x20)) { stopSCCB(); return(1); } usleep(DELAY_TIME); if(SCCBwriteByte(regID_h)) { stopSCCB(); return(1); } usleep(DELAY_TIME); if(SCCBwriteByte(regID_l)) { stopSCCB(); return(1); } stopSCCB(); usleep(DELAY_TIME); //ÉèÖüĴæÆ÷µØÖ·ºó£¬²ÅÊǶÁ startSCCB(); if(SCCBwriteByte(0x21)) { stopSCCB(); return(1); } usleep(DELAY_TIME); *regDat_h=SCCBreadByte(); if(length == 2){ usleep(DELAY_TIME); SCCB_Ack(); *regDat_l=SCCBreadByte(); } noAck(); stopSCCB(); return(0); }