本文整理汇总了C++中I2C_Read函数的典型用法代码示例。如果您正苦于以下问题:C++ I2C_Read函数的具体用法?C++ I2C_Read怎么用?C++ I2C_Read使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了I2C_Read函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: i2c_data_verify
bool i2c_data_verify(alt_u32 scl_base, alt_u32 sda_base, alt_u8 ControlAddr){
bool bPass;
const alt_8 DeviceAddr = 0xA0;
alt_u8 OrgData, TestData, Data;
TestData = alt_nticks();
if (TestData == 0)
TestData = 0x12;
bPass = I2C_Read(scl_base, sda_base, DeviceAddr, ControlAddr, &OrgData);
if (bPass) // write
bPass = I2C_Write(scl_base, sda_base, DeviceAddr, ControlAddr, TestData);
if (bPass) // read
bPass = I2C_Read(scl_base, sda_base, DeviceAddr, ControlAddr, &Data);
if (bPass && (Data != TestData)) // verify
bPass = FALSE;
// restore
if (bPass) // write back
bPass = I2C_Write(scl_base, sda_base, DeviceAddr, ControlAddr, OrgData);
if (bPass) // read
bPass = I2C_Read(scl_base, sda_base, DeviceAddr, ControlAddr, &Data);
if (bPass && (Data != OrgData)) // verify
bPass = FALSE;
return bPass;
}
示例2: Mpu6050ReadTemp
/*******************************************************************************
* @brief mpu6050 Tx.
* @param DestAddr: To
* @param pData: The data Tx
* @param DataLen: The number of data need to Tx
* @retval Ref to system.h - StatusTypeDef.
*/
void Mpu6050ReadTemp(unsigned char DevID, char *pTemp)
{
unsigned char buf[2] = {0, 0};
I2C_Read(DevID, TEMP_OUT_L, 1, &buf[0]);
I2C_Read(DevID, TEMP_OUT_H, 1, &buf[1]);
*pTemp = (*(short *)buf) / 340 + 36.53;
}
示例3: EE_Read
/******************************************************************************
** Function name: EE_Read
**
** Description: Reads a word from EEPROM (Uses I2CRead)
**
** Parameters: Address to read from
** Returned value: Data at address
**
******************************************************************************/
uint32_t EE_Read (uint16_t _EEadd)
{
uint32_t retDATA = 0;
retDATA = I2C_Read(_EEadd+3);
retDATA = (retDATA << 8) + I2C_Read(_EEadd+2);
retDATA = (retDATA << 8) + I2C_Read(_EEadd+1);
retDATA = (retDATA << 8) + I2C_Read(_EEadd+0);
return retDATA;
}
示例4: MPU9050_Read
uint8_t MPU9050_Read(mpu9050_t *mpu9050)
{
//const TickType_t xTickToWait = 10;
uint8_t status;
I2C_Read(MPUSLVADDR, INT_STATUS, &status, 1);
I2C_Read(MPUSLVADDR, ACCEL_XOUT_H, (uint8_t *)&mpu9050->accel.x, sizeof(triaxial_t));
I2C_Read(MPUSLVADDR, GYRO_XOUT_H, (uint8_t *)&mpu9050->gyro.x, sizeof(triaxial_t));
return status;
}
示例5: HMC_Read
uint8_t HMC_Read(HMC_Data_t *hmc_data)
{
uint8_t DataBuf[6];
float tmp, r;
I2C_Read(HMC_SLV_ADDR, DOUT_X_MSB, DataBuf, 6);
hmc_data->direct.x = (DataBuf[0] << 8 | DataBuf[1]);
hmc_data->direct.y = (DataBuf[2] << 8 | DataBuf[3]);
hmc_data->direct.z = (DataBuf[4] << 8 | DataBuf[5]);
r = sqrt((double)hmc_data->direct.x*(double)hmc_data->direct.x
+(double)hmc_data->direct.y*(double)hmc_data->direct.y
+(double)hmc_data->direct.z*(double)hmc_data->direct.z);
tmp = (double)hmc_data->direct.x/r;
tmp = acos(tmp);
hmc_data->angle.x = tmp*180.0/3.1415926;
tmp = (double)hmc_data->direct.y/r;
tmp = acos(tmp);
hmc_data->angle.y = tmp*180.0/3.1415926;
tmp = (double)hmc_data->direct.z/r;
tmp = acos(tmp);
hmc_data->angle.z = tmp*180.0/3.1415926;
return pdTRUE;
}
示例6: BusyXLCD
unsigned char BusyXLCD(void) {
OLATB_curr |= 0xC0; // RW and RS are on
clockLCDLow();
I2C_Write(EXPANDER_IODIRB, 0x1E); // data bus is now an input
I2C_Write(EXPANDER_OLATB, OLATB_curr);
DelayFor18TCY();
clockLCDHigh(); // Clock in the command with E
DelayFor18TCY();
busy = I2C_Read(EXPANDER_GPIOB);
clockLCDLow(); // Reset clock line
DelayFor18TCY();
clockLCDHigh(); // Clock out other nibble
DelayFor18TCY();
clockLCDLow();
OLATB_curr &= 0xBF; // Reset control line
I2C_Write(EXPANDER_OLATB, OLATB_curr);
I2C_Write(EXPANDER_IODIRB, 0x00); // set data bus back to output
// busy bit is high?
if (busy & 0x02)
{
return 1;
}
// Busy bit is low
return 0;
}
示例7: ReadGPIO
/* Read GPIO Digital Inputs */
void ReadGPIO(void)
{
int fd;
unsigned char buff[5];
unsigned char data[5];
buff[0]=0x03;
data[0]=0x00;
/* Open I2C-BUS */
I2C_Open(&fd, 0x21);
/* Write register */
I2C_Send(&fd, buff,1 );
/* Read the ADC */
I2C_Read(&fd, data, 1);
printf("GPIO: 0x%02x\n", data[0]);
/* Close I2C-BUS */
I2C_Close(&fd);
}
示例8: ReadSV
/* Read Board Firmware Version */
void ReadSV(void)
{
int fd;
unsigned char buff[5];
unsigned char data[5];
buff[0]=0x21;
data[0]=0x00;
/* Open I2C-BUS */
I2C_Open(&fd, 0x21);
/* Write register */
I2C_Send(&fd, buff,1 );
/* Read the ADC */
I2C_Read(&fd, data, 1);
printf("Firmware Version: %d.0.%2d\n", data[0]>>4,data[0]&0x0f);
/* Close I2C-BUS */
I2C_Close(&fd);
}
示例9: ReadID
/* Read Board ID */
void ReadID(void)
{
int fd;
unsigned char buff[5];
unsigned char data[5];
buff[0]=0x20;
data[0]=0x00;
/* Open I2C-BUS */
I2C_Open(&fd, 0x21);
/* Write register */
I2C_Send(&fd, buff,1 );
/* Read ID */
I2C_Read(&fd, data, 1);
printf("ID: 0x%x\n", data[0]);
/* Close I2C-BUS */
I2C_Close(&fd);
}
示例10: MAX44000_ReadRegister
//--------------- Reads data from device - single location
char MAX44000_ReadRegister(char rAddr) {
tmp_data[0] = rAddr;
I2C_Start(); // issue I2C start signal
I2C_Write(MAX44000_I2C_Adr,tmp_data,1,_I2C_END_MODE_RESTART);
I2C_Read (MAX44000_I2C_Adr,tmp_data,1,_I2C_END_MODE_STOP);
return tmp_data[0];
}
示例11: Temperature_Get
/*---------------------------------------------------------------------------*
* Routine: Temperature_Get
*---------------------------------------------------------------------------*
* Description:
* Read the value of the ADT7420 and return the temperature in Celcius.
* Inputs:
* void
* Outputs:
* uint16_t -- temperature with 4 bits of fraction and 12 bits of
* integer.
*---------------------------------------------------------------------------*/
uint16_t Temperature_Get(void)
{
uint8_t target_reg;
uint8_t target_data[2] = {0x00, 0x00};
uint16_t temp = 0;
uint32_t timeout = MSTimerGet();
I2C_Request r;
r.iAddr = ADT7420_ADDR>>1;
r.iSpeed = 100;
r.iWriteData = &target_reg;
r.iWriteLength = 1;
r.iReadData = target_data;
r.iReadLength = 2;
I2C_Write(&r, 0);
while ((I2C_IsBusy()) && (MSTimerDelta(timeout) < 10))
{}
I2C_Read(&r, 0);
while ((I2C_IsBusy()) && (MSTimerDelta(timeout) < 10))
{}
/* Convert the device measurement into a decimal number and insert
into a temporary string to be displayed */
temp = (target_data[0] << 8) + target_data[1];
// temp = temp >> 3;
return temp;
}
示例12: MPL3115A2_readBytes_
bool MPL3115A2_readBytes_(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest, bool loop) {
int i=0;
for(;i<5;i++)
{
if(I2C_Write(address,
(unsigned char*)&subAddress,
1,
0))
break; // if written length > 0
if (!loop) break;
}
if (i>=5)
return false;
for(i=0;i<5;i++)
{
if(I2C_Read(address,
dest,
count,
1))
break; // if read length > 0
if (!loop) break;
}
if (i<5)
return true;
return false;
}
示例13: EEPROM_Seq_Read
/*---------------------------------------------------------------------------*
* Routine: EEPROM_Seq_Read
*---------------------------------------------------------------------------*
* Description:
* Read the value of the address and return the data .
* Inputs:
* void
* Outputs:
* uint16_t -- temperature with 4 bits of fraction and 12 bits of
* integer.
*---------------------------------------------------------------------------*/
int16_t EEPROM_Seq_Read(uint16_t addr,uint8_t *pdata, uint16_t r_lenth)
{
uint8_t target_address[2];
uint32_t timeout = MSTimerGet();
I2C_Request r;
int16_t result = 0;
target_address[0] = addr & 0xFF00;
target_address[1] = addr & 0x00FF;
r.iAddr = EEPROM_ADDR >> 1;
r.iSpeed = 100;
r.iWriteData = target_address;
r.iWriteLength = 2;
r.iReadData = pdata;
r.iReadLength = r_lenth;
I2C_Write(&r, 0);
while ((I2C_IsBusy()) && (MSTimerDelta(timeout) < 10))
{}
I2C_Read(&r, 0);
while ((I2C_IsBusy()) && (MSTimerDelta(timeout) < 10))
{}
result = 1;
return result;
}
示例14: Gyr_Read
/**
* @brief Reads from gyro
* @param Pointer to data structure
* @retval I2C success/error code
*/
I2C_Returntype Gyr_Read(Vector* a) { //This uses the pointer looparound
I2C_Returntype r=I2C_Read((uint8_t*)a,6,GYR_ADD,GYR_DATA);
Flipbytes(&(a->x)); //Fixed the swapped endianess
Flipbytes(&(a->y));
Flipbytes(&(a->z));
return r;
}
示例15: MSTimerGet
/*---------------------------------------------------------------------------*
* Routine: Accelerometer_Get
*---------------------------------------------------------------------------*
* Description:
* Read the value of the ADT7420 and return the LightSensor in Lux.
* Inputs:
* void
* Outputs:
* uint16_t -- LightSensor with 4 bits of fraction and 12 bits of
* integer.
*---------------------------------------------------------------------------*/
int16_t *Accelerometer_Get(void)
{
uint8_t target_reg, acc_axis;
uint8_t target_data[2] = {0x00, 0x00};
uint32_t timeout = MSTimerGet();
I2C_Request r;
//Accelerometer_Init();
for(acc_axis=0; acc_axis<3; acc_axis++)
{
target_reg = acc_reg_addr[acc_axis];
r.iAddr = ACCEL_ADDR>>1;
r.iSpeed = 100;
r.iWriteData = &target_reg;
r.iWriteLength = 1;
r.iReadData = target_data;
r.iReadLength = 2;
I2C_Write(&r, 0);
while ((I2C_IsBusy()) && (MSTimerDelta(timeout) < 10))
{}
I2C_Read(&r, 0);
while ((I2C_IsBusy()) && (MSTimerDelta(timeout) < 10))
{}
/* Convert the device measurement into a decimal number and insert
into a temporary string to be displayed */
gAccData[acc_axis] = (target_data[1] << 8) + target_data[0];
}
return gAccData;
}