2016-12-26 1 views
0

디바이스 ID를 올바르게 입력했는지 확인하기 위해 ADXL345 가속도계를 테스트했습니다. 이제는 다른 축에서 가속을 얻으려고 했으므로 레지스터 주소가 내가 알지 못하는 어떤 이유로 보내지지 않았기 때문에 완료 할 수 없습니다.레지스터 주소가 TM4C123GH6PM 보드의 I2C를 사용하여 전송되지 않았습니다.

가속도계 데이터 시트에 따라, 바이트를 작성하기 위해 :

enter image description here

사용되는 코드 :

void initialize_accelerometer() 
    { 
     I2C0_MSA_R |=0x000000A6; //Specify the slave address of the master and that the next operation is a Transmit or write 
     I2C0_MDR_R=0x2D; //Register address, this is the data not sent 
     I2C0_MCS_R=0x00000003; // (START, RUN); 
     while(I2C0_MCS_R&I2C_MCS_BUSBSY){}; 
     if((I2C0_MCS_R&I2C_MCS_ERROR)==0) 
     { 
      I2C0_MDR_R=0x08; //Data -> Set power control to measure 
      I2C0_MCS_R=0x00000005; // (RUN, STOP); 
      if((I2C0_MCS_R&I2C_MCS_ERROR)==0) 
      { 
       set_data_format(); 
      } 
     } 

} 논리 분석기

시험을 결과는 다음과 같습니다.

enter image description here

자세히 알 수 있듯이 레지스터 주소 만 전송됩니다. 오류를 찾을 수 있도록 도와 주시겠습니까?

덕분에, 하비에르

답변

0

오, 데이터 시트를 읽고 다시 나는 그렇게 while(I2C0_MCS_R&I2C_MCS_BUSY){};에 대한 while(I2C0_MCS_R&I2C_MCS_BUSBSY){};을 변경, 잘못된 비트 마스크 문제를 해결 것을 발견했다.

관련 문제