here is my simple code in main.c
I connect GOPIB Pin6 or Pin7 to Oscilloscope without slave device. But only 0 voltage at the screen.
Code: Select all
#include "ch.h"
#include "hal.h"
#define STM32F103C8
#define addr 0b1001100
//#include "test.cpp"
/*
* I2C1 config.
*/
static const I2CConfig i2cfg1 = {
OPMODE_I2C,
100000,
FAST_DUTY_CYCLE_2,
};
static uint8_t accel_tx_data[8];
I2CDriver I2CD1;
int main(void) {
halInit();
chSysInit();
i2cInit();
palSetPadMode(GPIOB, GPIOB_I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
palSetPadMode(GPIOB, GPIOB_I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
i2cStart(&I2CD1, &i2cfg1);
msg_t status = MSG_OK;
systime_t tmo = MS2ST(4);
accel_tx_data[0] = 0b01000001;
accel_tx_data[1] = 0b11100111;
accel_tx_data[2] = 0b01000001;
accel_tx_data[3] = 0b00000000;
while(1){
i2cAcquireBus(&I2CD1);
status = i2cMasterTransmitTimeout(&I2CD1, addr,
accel_tx_data, 4, NULL, 0, tmo);
i2cReleaseBus(&I2CD1);
}
}