Chào các bạn,
MÌnh có nhu cầu kết nối cảm biến gia tốc MMA8452Q với vi điều khiển STM32F429 trên board STM32F429 Discovery. 02 cổng I2C 1 và 2 trên board này đã được dùng cho việc khác, cổng I2C số 3 được dùng giao tiếp với cảm ứng của màn hình. Do đó mình tự tạo một cổng giao tiếp I2C mới sử dụng chân số 9, 10 của cổng A và cấu hình cổng như sau:
GPIO_InitTypeDef gpio_init;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
gpio_init.GPIO_Mode = GPIO_Mode_AF;
gpio_init.GPIO_Pin = SDA| SCL;
gpio_init.GPIO_PuPd = GPIO_PuPd_UP;
gpio_init.GPIO_OType = GPIO_OType_OD;
GPIO_Init(GPIOA, &gpio_init);
trong đó SCL = Pin9, SDA = Pin10.
Tuy nhiên khi mình thử thay đổi trạng thái của các chân SCL và SDA đều không được. Chắc chắn mình cấu hình các chân chưa chuẩn nhưng mình không tìm được nguyên nhân. Các bạn có thể giúp mình sửa đoạn code trên được không ạ?
MÌnh có nhu cầu kết nối cảm biến gia tốc MMA8452Q với vi điều khiển STM32F429 trên board STM32F429 Discovery. 02 cổng I2C 1 và 2 trên board này đã được dùng cho việc khác, cổng I2C số 3 được dùng giao tiếp với cảm ứng của màn hình. Do đó mình tự tạo một cổng giao tiếp I2C mới sử dụng chân số 9, 10 của cổng A và cấu hình cổng như sau:
GPIO_InitTypeDef gpio_init;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
gpio_init.GPIO_Mode = GPIO_Mode_AF;
gpio_init.GPIO_Pin = SDA| SCL;
gpio_init.GPIO_PuPd = GPIO_PuPd_UP;
gpio_init.GPIO_OType = GPIO_OType_OD;
GPIO_Init(GPIOA, &gpio_init);
trong đó SCL = Pin9, SDA = Pin10.
Tuy nhiên khi mình thử thay đổi trạng thái của các chân SCL và SDA đều không được. Chắc chắn mình cấu hình các chân chưa chuẩn nhưng mình không tìm được nguyên nhân. Các bạn có thể giúp mình sửa đoạn code trên được không ạ?
Comment