cubeMX로 I2C 드라이브 개발
3092 단어 사물인터넷
cubeMX로 I2C 드라이브 개발
일의 원인은 pca9555칩으로 단편기의 IO구를 확장해야 하기 때문이다. pca9555의 관리는 I2C 버스를 통해 하는 관리이다.
주의 사항
참고:
어떻게 기존의 cubeMX 프로젝트에서 I2C 코드를 생성합니까?
어떻게 I2C의 드라이브를 호출합니까?
HAL_StatusTypeDef I2C_PCA9555_WriteBuffer(uint16_t Addr, uint8_t Reg, uint16_t RegSize, uint8_t *pBuffer, uint16_t Length)
{
HAL_StatusTypeDef status = HAL_OK;
//printf("1write i2c addr %x,reg %x\r
",Addr,Reg);
Addr = (Addr << 1) | 0;
//printf("2write i2c addr %x,reg %x\r
",Addr,Reg);
status = HAL_I2C_Mem_Write(&hi2c2, Addr, (uint16_t)Reg, RegSize, pBuffer, Length, 1000);
if (status != HAL_OK) {
printf("\r
i2c error status:%d\r
",status);
I2C_PCA9555_Error();
}
return status;
}
읽다
HAL_StatusTypeDef I2C_PCA9555_ReadBuffer(uint16_t Addr, uint8_t Reg, uint16_t RegSize, uint8_t *pBuffer, uint16_t Length)
{
HAL_StatusTypeDef status = HAL_OK;
//printf("1read i2c addr %x,reg %x\r
",Addr,Reg);
Addr = (Addr << 1) | 1;
//printf("2read i2c addr %x,reg %x\r
",Addr,Reg);
status = HAL_I2C_Mem_Read(&hi2c2, Addr, (uint16_t)Reg, RegSize, pBuffer, Length, 1000);
if (status != HAL_OK) {
printf("i2c status:%d\r
",status);
I2C_PCA9555_Error();
}
return status;
}
무파형 문제는 어떻게 해결합니까?
논리 분석기는 3.3V 설비는 2.8V이기 때문에 압차가 저항을 바꾸어 태웠기 때문에 결과적으로 mcu와 i2c 부품 사이가 통하지 않는다. 이후에 이런 상황에 부딪히면 저항이 태웠는지 측정해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cubeMX로 I2C 드라이브 개발pca9555의 관리는 I2C 버스를 통해 하는 관리이다. 메인 디렉터리에서 하지 말고 cubeMX의 프로젝트를 코드copy와 연결해서 코드를 생성해야 한다.새로 생성된 코드가 이전의 코드를 덮어쓰지 않도록 하세요....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.