コード例 #1
0
u8 sccb_read(u8 IdAddr, u8 SubAddr)
{
	u8 data;

	down(&bus_lock);
	sccb_start();
	sccb_write_byte(IdAddr);
	sccb_write_byte(SubAddr);                
	sccb_stop();

	sccb_start();
	sccb_write_byte(IdAddr|0x01);
	data = sccb_read_byte();
	sccb_stop();
	up(&bus_lock);
	
	return data;
}
コード例 #2
0
/**
  * @brief  读取一串数据
  * @param  pBuffer     存放读出数据
  * @param  ReadAddress 待读出地址
  * @retval 1:成功读入
  *         2:失败
  */
int sccb_read_byte(uint8_t* pBuffer, uint16_t length, uint8_t ReadAddress)
{	
    if(!sccb_start())
    {
        return DISABLE;
    }
    sccb_send_byte( DEV_ADR );         /* 器件地址 */
    if( !sccb_wait_ack() )
    {
        sccb_stop(); 
        return DISABLE;
    }
    sccb_send_byte( ReadAddress );     /* 设置低起始地址 */      
    sccb_wait_ack();	
    sccb_stop(); 
	
    if(!sccb_start())
    {
        return DISABLE;
    }
    sccb_send_byte( DEV_ADR + 1 );     /* 器件地址 */ 
    if(!sccb_wait_ack())
    {
        sccb_stop(); 
        return DISABLE;
    }
    while(length)
    {
        *pBuffer = sccb_receive_byte();
        if(length == 1)
        {
            sccb_no_ack();
        }
        else
        {
            sccb_ack(); 
        }
        pBuffer++;
        length--;
    }
    sccb_stop();
    return ENABLE;
}
コード例 #3
0
void sccb_write(u8 IdAddr, u8 SubAddr, u8 data)
{
	down(&bus_lock);
	sccb_start();
	sccb_write_byte(IdAddr);
	sccb_write_byte(SubAddr);
	sccb_write_byte(data);
	sccb_stop();
	up (&bus_lock);
}
コード例 #4
0
/**
  * @brief  写一字节数据
  * @param  WriteAddress 待写入地址
  * @param  SendByte     待写入数据
  * @retval 无
  */
int sccb_write_byte( uint16_t WriteAddress , uint8_t SendByte )
{  
    if(!sccb_start())
    {
        return DISABLE;
    }
    sccb_send_byte( DEV_ADR );                    /* 器件地址 */            
    if( !sccb_wait_ack() )
    {          
        sccb_stop(); 
        return DISABLE;
    }
    
    sccb_send_byte((uint8_t)(WriteAddress & 0x00FF));   /* 设置低起始地址 */      
    sccb_wait_ack();	
    sccb_send_byte(SendByte);
    sccb_wait_ack();   
    sccb_stop(); 
    return ENABLE;
}