예제 #1
0
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;
}
예제 #2
0
파일: MT9M031.c 프로젝트: wzw/D3
////////////////////////////
//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);
}