FXLS8471Q i2c communication sample

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

FXLS8471Q i2c communication sample

跳至解决方案
2,140 次查看
piotrrosenbaum
Contributor I

Hi !

I Can't communicate with FXLS8471Q via i2c. I want to read WHO_I_AM register but device don't respond.

After read who value is 255. Can You show me a example code how to read it ?

#define FXLS8471Q_SLAVE_ADDR       0x1E

#define FXLS8471Q_WHOAMI     0x0D

void FXLS_init(void) {

    uint8_t who;

    Soft_I2C1_send_address(FXLS8471Q_SLAVE_ADDR);

    Soft_I2C1_send_data(FXLS8471Q_WHOAMI, END);

    Soft_I2C1_send_address(FXLS8471Q_SLAVE_ADDR);

    Soft_I2C1_send_data(0x00, END);

    who = Soft_I2C1_read_data(END);

}

标记 (2)
0 项奖励
1 解答
1,714 次查看
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Piotr,

Here is an example code to read the WHO_AM_I register (0x0D) using I2C when SA0 = SA1 = 0.

//FXLS8471Q 7-bit I2C address

#define FXLS8471Q_I2C_ADDRESS   0x1E // SA0 pin = SA1 = 0 -> 7-bit I2C address is 0x1E

who_am_i = I2C_ReadRegister(FXLS8471Q_I2C_ADDRESS, 0x0D);

unsigned char I2C_ReadRegister(unsigned char u8SlaveAddress, unsigned char u8RegisterAddress)

{

  unsigned char result;

  

  I2C_Start();         

  I2C0_D = u8SlaveAddress << 1; /* Send I2C device address with W/R bit = 0 */

  I2C_Wait();

  I2C0_D = u8RegisterAddress; /* Send register address */

  I2C_Wait();

  I2C_RepeatedStart();

  I2C0_D = (u8SlaveAddress << 1) | 0x01; /* Send I2C device address this time with W/R bit = 1 */

  I2C_Wait();

  I2C_EnterRxMode();

  I2C_DisableAck();

  result = I2C0_D;

  I2C_Wait();

  I2C_Stop(); 

  result = I2C0_D;

  Pause(50);

  return result;

}

A copy from the data sheet:

Single byte read_text.JPG

Single byte read.JPG

I hope it helps.

Regards,

Tomas

PS: If my answer helps to solve your question, please mark it as "Correct". Thank you.

在原帖中查看解决方案

0 项奖励
1 回复
1,715 次查看
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Piotr,

Here is an example code to read the WHO_AM_I register (0x0D) using I2C when SA0 = SA1 = 0.

//FXLS8471Q 7-bit I2C address

#define FXLS8471Q_I2C_ADDRESS   0x1E // SA0 pin = SA1 = 0 -> 7-bit I2C address is 0x1E

who_am_i = I2C_ReadRegister(FXLS8471Q_I2C_ADDRESS, 0x0D);

unsigned char I2C_ReadRegister(unsigned char u8SlaveAddress, unsigned char u8RegisterAddress)

{

  unsigned char result;

  

  I2C_Start();         

  I2C0_D = u8SlaveAddress << 1; /* Send I2C device address with W/R bit = 0 */

  I2C_Wait();

  I2C0_D = u8RegisterAddress; /* Send register address */

  I2C_Wait();

  I2C_RepeatedStart();

  I2C0_D = (u8SlaveAddress << 1) | 0x01; /* Send I2C device address this time with W/R bit = 1 */

  I2C_Wait();

  I2C_EnterRxMode();

  I2C_DisableAck();

  result = I2C0_D;

  I2C_Wait();

  I2C_Stop(); 

  result = I2C0_D;

  Pause(50);

  return result;

}

A copy from the data sheet:

Single byte read_text.JPG

Single byte read.JPG

I hope it helps.

Regards,

Tomas

PS: If my answer helps to solve your question, please mark it as "Correct". Thank you.

0 项奖励
%3CLINGO-SUB%20id%3D%22lingo-sub-493646%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFXLS8471Q%20i2c%20%E9%80%9A%E4%BF%A1%E7%A4%BA%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-493646%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E5%97%A8%20%EF%BC%81%3C%2FP%3E%3CP%3E%E6%88%91%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20i2c%20%E4%B8%8E%20FXLS8471Q%20%E9%80%9A%E4%BF%A1%E3%80%82%E6%88%91%E6%83%B3%E8%AF%BB%E5%8F%96%20WHO_I_AM%20%E6%B3%A8%E5%86%8C%E8%A1%A8%EF%BC%8C%E4%BD%86%E8%AE%BE%E5%A4%87%E6%B2%A1%E6%9C%89%E5%93%8D%E5%BA%94%E3%80%82%3C%2FP%3E%3CP%3E%E8%AF%BB%E5%8F%96%E5%90%8E%EF%BC%8C%E8%B0%81%E7%9A%84%E5%80%BC%E4%B8%BA%20255%E3%80%82%E6%82%A8%E8%83%BD%E7%BB%99%E6%88%91%E4%B8%80%E4%B8%AA%E5%A6%82%E4%BD%95%E8%AF%BB%E5%8F%96%E4%BB%A3%E7%A0%81%E7%9A%84%E7%A4%BA%E4%BE%8B%E5%90%97%EF%BC%9F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22_jivemacro_uid_1464013746319501%20jive_macro_code%20jive_text_macro%22%20data-renderedposition%3D%22134_50_798_32%22%20jivemacro_uid%3D%22_1464013746319501%22%3E%3CP%3E%23define%20FXLS8471Q_SLAVE_ADDR%200x1E%20%3C%2FP%3E%3CP%3E%23define%20FXLS8471Q_WHOAMI%200x0D%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22_jivemacro_uid_14640136729548970%20jive_macro_code%20jive_text_macro%22%20data-renderedposition%3D%22244_50_798_224%22%20jivemacro_uid%3D%22_14640136729548970%22%3E%3CP%3Evoid%20FXLS_init(void)%20%7B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20%20%20uint8_t%20who%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20%20%20Soft_I2C1_send_address(FXLS8471Q_SLAVE_ADDR)%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20%20%20Soft_I2C1_send_data(FXLS8471Q_WHOAMI%2C%20END)%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20%20%20Soft_I2C1_send_address(FXLS8471Q_SLAVE_ADDR)%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20%20%20Soft_I2C1_send_data(0x00%2C%20END)%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20%20%20who%20%3D%20Soft_I2C1_read_data%EF%BC%88END%EF%BC%89%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-493647%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FXLS8471Q%20i2c%20communication%20sample%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-493647%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%E7%9A%AE%E5%A5%A5%E7%89%B9%E3%80%81%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E4%B8%8B%E9%9D%A2%E6%98%AF%3CSPAN%20lang%3D%22EN-US%22%3E%E5%9C%A8%20SA0%20%3D%20SA1%20%3D%200%20%E6%97%B6%E4%BD%BF%E7%94%A8%3CSUP%3EI2C%3C%2FSUP%3E%3C%2FSPAN%3E%E8%AF%BB%E5%8F%96%20WHO_AM_I%20%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%880x0D%EF%BC%89%E7%9A%84%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20jive_text_macro%20_jivemacro_uid_14642664011759806%22%20data-renderedposition%3D%22117_8_1192_32%22%20jivemacro_uid%3D%22_14642664011759806%22%20modifiedtitle%3D%22true%22%3E%3CP%3E%2F%2FFXLS8471Q%207%20%E4%BD%8D%20I2C%20%E5%9C%B0%E5%9D%80%3C%2FP%3E%3CP%3E%23define%20FXLS8471Q_I2C_ADDRESS%200x1E%20%2F%2F%20SA0%20%E5%BC%95%E8%84%9A%20%3D%20SA1%20%3D%200%20-%26gt%3B%207%20%E4%BD%8D%20I2C%20%E5%9C%B0%E5%9D%80%E4%B8%BA%200x1E%20%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20jive_text_macro%20_jivemacro_uid_14642662161523383%22%20data-renderedposition%3D%22175_8_1192_16%22%20jivemacro_uid%3D%22_14642662161523383%22%3E%3CP%3Ewho_am_i%20%3D%20I2C_ReadRegister(FXLS8471Q_I2C_ADDRESS%2C%200x0D)%EF%BC%9B%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20jive_text_macro%20_jivemacro_uid_14642660521477583%22%20data-renderedposition%3D%22217_8_1192_416%22%20jivemacro_uid%3D%22_14642660521477583%22%3E%3CP%3Eunsigned%20char%20I2C_ReadRegister%EF%BC%88unsigned%20char%20u8SlaveAddress%EF%BC%8Cunsigned%20char%20u8RegisterAddress%EF%BC%89%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%20%20%E6%97%A0%E7%AC%A6%E5%8F%B7%20char%20result%EF%BC%9B%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%20%3C%2FP%3E%3CP%3E%20%20I2C_Start()%EF%BC%9B%20%20%20%20%20%20%20%20%20%20%3C%2FP%3E%3CP%3EI2C0_D%20%3D%20u8SlaveAddress%20%26lt%3B%20%26lt%3B%201%3B%20%2F*%20%E5%8F%91%E9%80%81%20W%2FR%20%E4%BD%8D%20%3D%200%20%E7%9A%84%20I2C%20%E8%AE%BE%E5%A4%87%E5%9C%B0%E5%9D%80%20*%2F%3C%2FP%3E%3CP%3E%20%20I2C_Wait()%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20I2C0_D%20%3D%20u8RegisterAddress%3B%20%2F*%20%E5%8F%91%E9%80%81%E5%AF%84%E5%AD%98%E5%99%A8%E5%9C%B0%E5%9D%80%20*%2F%3C%2FP%3E%3CP%3E%20%20I2C_Wait()%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20I2C_RepeatedStart()%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EI2C0_D%20%3D%20(u8SlaveAddress%20%26lt%3B%20%26lt%3B%201)%20%7C%200x01%3B%20%2F*%20%E8%BF%99%E6%AC%A1%E4%BD%BF%E7%94%A8%20W%2FR%20%E4%BD%8D%20%3D%201%20%E5%8F%91%E9%80%81%20I2C%20%E8%AE%BE%E5%A4%87%E5%9C%B0%E5%9D%80%20*%2F%20%3C%2FP%3E%3CP%3E%20%20I2C_Wait()%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20I2C_EnterRxMode()%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20I2C_DisableAck()%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%20%20result%20%3D%20I2C0_D%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20I2C_Wait()%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20I2C_Stop()%EF%BC%9B%20%20%3C%2FP%3E%3CP%3E%20%20result%20%3D%20I2C0_D%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20%E6%9A%82%E5%81%9C(50)%EF%BC%9B%3C%2FP%3E%3CP%3E%20%20%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C%EF%BC%9B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%95%B0%E6%8D%AE%E8%A1%A8%E5%89%AF%E6%9C%AC%EF%BC%9A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Single%20byte%20read_text.JPG%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Single%20byte%20read_text.JPG%22%20style%3D%22width%3A%20689px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F58141i23EEB5F8ABC667A7%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Single%20byte%20read_text.JPG%22%20alt%3D%22Single%20byte%20read_text.JPG%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Single%20byte%20read.JPG%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Single%20byte%20read.JPG%22%20style%3D%22width%3A%20854px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F58167i81568F9C4BD43EDE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Single%20byte%20read.JPG%22%20alt%3D%22Single%20byte%20read.JPG%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%B8%8C%E6%9C%9B%E5%AF%B9%E6%82%A8%E6%9C%89%E6%89%80%E5%B8%AE%E5%8A%A9%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%AD%A4%E8%87%B4%EF%BC%8C%3C%2FP%3E%3CP%3E%E6%89%98%E9%A9%AC%E6%96%AF%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011px%3B%20font-family%3A%20arial%2C%20helvetica%2C%20'helvetica%20neue'%2C%20verdana%2C%20sans-serif%3B%20color%3A%20%2351626f%3B%22%3E%3CEM%3EPS%EF%BC%9A%E5%A6%82%E6%9E%9C%E6%88%91%E7%9A%84%E5%9B%9E%E7%AD%94%E6%9C%89%E5%8A%A9%E4%BA%8E%E8%A7%A3%E5%86%B3%E6%82%A8%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E8%AF%B7%E6%A0%87%E8%AE%B0%E4%B8%BA%22%E6%AD%A3%E7%A1%AE%22%20%E3%80%82%E8%B0%A2%E8%B0%A2%E3%80%82%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E