Unified dual I2C naming across Taranis and Horus builds.

Using "*_B1_*" for first logical I2C bus and "*_B2_*" for second logical I2C bus (instead of less clear I2C and I2CX).
This commit is contained in:
rotorman
2021-08-21 15:59:19 +02:00
parent b123caba06
commit d19dcb9fc9
10 changed files with 230 additions and 203 deletions
@@ -206,11 +206,11 @@ int main()
RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | KEYS_RCC_AHB1Periph |
LCD_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph |
AUX_SERIAL_RCC_AHB1Periph | AUX2_SERIAL_RCC_AHB1Periph |
I2C_TP_RCC_AHB1Periph | KEYS_BACKLIGHT_RCC_AHB1Periph |
I2C_B1_RCC_AHB1Periph | KEYS_BACKLIGHT_RCC_AHB1Periph |
SD_RCC_AHB1Periph, ENABLE);
RCC_APB1PeriphClockCmd(ROTARY_ENCODER_RCC_APB1Periph | LCD_RCC_APB1Periph | BACKLIGHT_RCC_APB1Periph |
INTERRUPT_xMS_RCC_APB1Periph | I2C_TP_RCC_APB1Periph |
INTERRUPT_xMS_RCC_APB1Periph | I2C_B1_RCC_APB1Periph |
AUX_SERIAL_RCC_APB1Periph | AUX2_SERIAL_RCC_APB1Periph |
SD_RCC_APB1Periph, ENABLE);
@@ -193,38 +193,38 @@ static const char configure[][2] = {
static void i2c2Init()
{
I2C_DeInit(I2CX);
I2C_DeInit(I2C_B2);
I2C_InitTypeDef I2C_InitStructure;
I2C_InitStructure.I2C_ClockSpeed = I2CX_SPEED;
I2C_InitStructure.I2C_ClockSpeed = I2C_B2_SPEED;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = 0x00;
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_Init(I2CX, &I2C_InitStructure);
I2C_Cmd(I2CX, ENABLE);
I2C_Init(I2C_B2, &I2C_InitStructure);
I2C_Cmd(I2C_B2, ENABLE);
GPIO_PinAFConfig(I2CX_SCL_GPIO, I2CX_SCL_GPIO_PinSource, I2CX_GPIO_AF);
GPIO_PinAFConfig(I2CX_SDA_GPIO, I2CX_SDA_GPIO_PinSource, I2CX_GPIO_AF);
GPIO_PinAFConfig(I2C_B2_SCL_GPIO, I2C_B2_SCL_GPIO_PinSource, I2C_B2_GPIO_AF);
GPIO_PinAFConfig(I2C_B2_SDA_GPIO, I2C_B2_SDA_GPIO_PinSource, I2C_B2_GPIO_AF);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = I2CX_SCL_GPIO_PIN;
GPIO_InitStructure.GPIO_Pin = I2C_B2_SCL_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(I2CX_SCL_GPIO, &GPIO_InitStructure);
GPIO_Init(I2C_B2_SCL_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = I2CX_SDA_GPIO_PIN;
GPIO_Init(I2CX_SDA_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = I2C_B2_SDA_GPIO_PIN;
GPIO_Init(I2C_B2_SDA_GPIO, &GPIO_InitStructure);
}
#define I2C_TIMEOUT_MAX 10000
bool I2C2_WaitEvent(uint32_t event)
{
uint32_t timeout = I2C_TIMEOUT_MAX;
while (!I2C_CheckEvent(I2CX, event)) {
while (!I2C_CheckEvent(I2C_B2, event)) {
if ((timeout--) == 0) return false;
}
return true;
@@ -233,7 +233,7 @@ bool I2C2_WaitEvent(uint32_t event)
bool I2C2_WaitEventCleared(uint32_t event)
{
uint32_t timeout = I2C_TIMEOUT_MAX;
while (I2C_CheckEvent(I2CX, event)) {
while (I2C_CheckEvent(I2C_B2, event)) {
if ((timeout--) == 0) {
TRACE("I2C Timeout!");
return false;
@@ -247,23 +247,23 @@ int setGyroRegister(uint8_t address, uint8_t value)
if (!I2C2_WaitEventCleared(I2C_FLAG_BUSY))
return -1;
I2C_GenerateSTART(I2CX, ENABLE);
I2C_GenerateSTART(I2C_B2, ENABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return -1;
I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Transmitter);
I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Transmitter);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
return -1;
I2C_SendData(I2CX, address);
I2C_SendData(I2C_B2, address);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING))
return -1;
I2C_SendData(I2CX, value);
I2C_SendData(I2C_B2, value);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED))
return -1;
I2C_GenerateSTOP(I2CX, ENABLE);
I2C_GenerateSTOP(I2C_B2, ENABLE);
return 0;
}
@@ -273,31 +273,31 @@ int readGyroRegister(uint8_t address)
if (!I2C2_WaitEventCleared(I2C_FLAG_BUSY))
return -1;
I2C_GenerateSTART(I2CX, ENABLE);
I2C_GenerateSTART(I2C_B2, ENABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return -1;
I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Transmitter);
I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Transmitter);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
return -1;
I2C_SendData(I2CX, address);
I2C_SendData(I2C_B2, address);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED))
return -1;
I2C_GenerateSTART(I2CX, ENABLE);
I2C_GenerateSTART(I2C_B2, ENABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return -1;
I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Receiver);
I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Receiver);
I2C_AcknowledgeConfig(I2CX, DISABLE);
I2C_AcknowledgeConfig(I2C_B2, DISABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_RECEIVED))
return -1;
uint8_t value = I2C_ReceiveData(I2CX);
uint8_t value = I2C_ReceiveData(I2C_B2);
I2C_GenerateSTOP(I2CX, ENABLE);
I2C_GenerateSTOP(I2C_B2, ENABLE);
return value;
}
@@ -328,33 +328,33 @@ int gyroRead(uint8_t buffer[GYRO_BUFFER_LENGTH])
if (!I2C2_WaitEventCleared(I2C_FLAG_BUSY))
return -1;
I2C_GenerateSTART(I2CX, ENABLE);
I2C_GenerateSTART(I2C_B2, ENABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return -1;
I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Transmitter);
I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Transmitter);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
return -1;
I2C_SendData(I2CX, LSM6DS_GYRO_OUT_X_L_ADDR);
I2C_SendData(I2C_B2, LSM6DS_GYRO_OUT_X_L_ADDR);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED))
return -1;
I2C_GenerateSTART(I2CX, ENABLE);
I2C_GenerateSTART(I2C_B2, ENABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return -1;
I2C_Send7bitAddress(I2CX, LSM6DS_ADDRESS, I2C_Direction_Receiver);
I2C_Send7bitAddress(I2C_B2, LSM6DS_ADDRESS, I2C_Direction_Receiver);
I2C_AcknowledgeConfig(I2CX, ENABLE);
I2C_AcknowledgeConfig(I2C_B2, ENABLE);
for (uint8_t i=0; i<GYRO_BUFFER_LENGTH; i++) {
if (i == GYRO_BUFFER_LENGTH - 1)
I2C_AcknowledgeConfig(I2CX, DISABLE);
I2C_AcknowledgeConfig(I2C_B2, DISABLE);
if (!I2C2_WaitEvent(I2C_EVENT_MASTER_BYTE_RECEIVED))
return -1;
buffer[i] = I2C_ReceiveData(I2CX);
buffer[i] = I2C_ReceiveData(I2C_B2);
}
I2C_GenerateSTOP(I2CX, ENABLE);
I2C_GenerateSTOP(I2C_B2, ENABLE);
return 0;
}
+4 -4
View File
@@ -124,7 +124,7 @@ void boardInit()
FLYSKY_HALL_RCC_AHB1Periph |
#endif
#if defined(IMU_LSM6DS33)
I2C_IMU_RCC_AHB1Periph |
I2C_B2_RCC_AHB1Periph |
#else
AUX_SERIAL_RCC_AHB1Periph |
#endif
@@ -136,7 +136,7 @@ void boardInit()
HAPTIC_RCC_AHB1Periph |
INTMODULE_RCC_AHB1Periph |
EXTMODULE_RCC_AHB1Periph |
I2C_TP_RCC_AHB1Periph |
I2C_B1_RCC_AHB1Periph |
GPS_RCC_AHB1Periph |
SPORT_UPDATE_RCC_AHB1Periph |
TOUCH_INT_RCC_AHB1Periph |
@@ -152,7 +152,7 @@ void boardInit()
FLYSKY_HALL_RCC_APB1Periph |
#endif
#if defined(IMU_LSM6DS33)
I2C_IMU_RCC_APB1Periph |
I2C_B2_RCC_APB1Periph |
#else
AUX_SERIAL_RCC_APB1Periph |
#endif
@@ -162,7 +162,7 @@ void boardInit()
AUDIO_RCC_APB1Periph |
INTMODULE_RCC_APB1Periph |
EXTMODULE_RCC_APB1Periph |
I2C_TP_RCC_APB1Periph |
I2C_B1_RCC_APB1Periph |
MIXER_SCHEDULER_TIMER_RCC_APB1Periph |
GPS_RCC_APB1Periph |
BACKLIGHT_RCC_APB1Periph,
+33 -33
View File
@@ -705,44 +705,44 @@
#define TOUCH_RST_RCC_AHB1Periph 0
#endif
// I2C Bus for touch
// First I2C Bus
#if defined(RADIO_T18)
#define I2C_TP_RCC_AHB1Periph RCC_AHB1Periph_GPIOH
#define I2C_TP_RCC_APB1Periph RCC_APB1Periph_I2C3
#define I2C_TP I2C3
#define I2C_TP_GPIO GPIOH
#define I2C_TP_SCL_GPIO_PIN GPIO_Pin_7 // PH.07
#define I2C_TP_SDA_GPIO_PIN GPIO_Pin_8 // PH.08
#define I2C_TP_GPIO_AF GPIO_AF_I2C3
#define I2C_TP_SCL_GPIO_PinSource GPIO_PinSource7
#define I2C_TP_SDA_GPIO_PinSource GPIO_PinSource8
#define I2C_B1_RCC_AHB1Periph RCC_AHB1Periph_GPIOH
#define I2C_B1_RCC_APB1Periph RCC_APB1Periph_I2C3
#define I2C_B1 I2C3
#define I2C_B1_GPIO GPIOH
#define I2C_B1_SCL_GPIO_PIN GPIO_Pin_7 // PH.07
#define I2C_B1_SDA_GPIO_PIN GPIO_Pin_8 // PH.08
#define I2C_B1_GPIO_AF GPIO_AF_I2C3
#define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource7
#define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource8
#else
#define I2C_TP_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_TP_RCC_APB1Periph RCC_APB1Periph_I2C1
#define I2C_TP I2C1
#define I2C_TP_GPIO GPIOB
#define I2C_TP_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_TP_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_TP_GPIO_AF GPIO_AF_I2C1
#define I2C_TP_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_TP_SDA_GPIO_PinSource GPIO_PinSource9
#define I2C_B1_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_B1_RCC_APB1Periph RCC_APB1Periph_I2C1
#define I2C_B1 I2C1
#define I2C_B1_GPIO GPIOB
#define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_B1_GPIO_AF GPIO_AF_I2C1
#define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9
#endif
#define I2C_TP_CLK_RATE 400000
#define I2C_B1_CLK_RATE 400000
// I2C Bus for IMU
// Second I2C Bus
#if defined(RADIO_TX16S) && defined(IMU_LSM6DS33)
#define I2C_IMU_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_IMU_RCC_APB1Periph RCC_APB1Periph_I2C2
#define I2C_IMU I2C2
#define I2C_IMU_GPIO GPIOB
#define I2C_IMU_SCL_GPIO_PIN GPIO_Pin_10 // PB.10
#define I2C_IMU_SDA_GPIO_PIN GPIO_Pin_11 // PB.11
#define I2C_IMU_GPIO_AF GPIO_AF_I2C2
#define I2C_IMU_SCL_GPIO_PinSource GPIO_PinSource10
#define I2C_IMU_SDA_GPIO_PinSource GPIO_PinSource11
#define I2C_IMU_CLK_RATE 100000
#define AUX_IMU_PWR_GPIO GPIOA
#define AUX_IMU_PWR_GPIO_PIN GPIO_Pin_15 // PA.15
#define I2C_B2_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_B2_RCC_APB1Periph RCC_APB1Periph_I2C2
#define I2C_B2 I2C2
#define I2C_B2_GPIO GPIOB
#define I2C_B2_SCL_GPIO_PIN GPIO_Pin_10 // PB.10
#define I2C_B2_SDA_GPIO_PIN GPIO_Pin_11 // PB.11
#define I2C_B2_GPIO_AF GPIO_AF_I2C2
#define I2C_B2_SCL_GPIO_PinSource GPIO_PinSource10
#define I2C_B2_SDA_GPIO_PinSource GPIO_PinSource11
#define I2C_B2_CLK_RATE 100000
#define AUX_I2C_B2_PWR_GPIO GPIOA
#define AUX_I2C_B2_PWR_GPIO_PIN GPIO_Pin_15 // PA.15
#endif
// Haptic
+48 -21
View File
@@ -33,52 +33,79 @@ void I2C_MspInit(I2C_HandleTypeDef* hi2c)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if (I2C_TP_GPIO == GPIOA)
if (I2C_B1_GPIO == GPIOA)
__HAL_RCC_GPIOA_CLK_ENABLE();
else if (I2C_TP_GPIO == GPIOB)
else if (I2C_B1_GPIO == GPIOB)
__HAL_RCC_GPIOB_CLK_ENABLE();
else if (I2C_TP_GPIO == GPIOC)
else if (I2C_B1_GPIO == GPIOC)
__HAL_RCC_GPIOC_CLK_ENABLE();
else if (I2C_TP_GPIO == GPIOH)
else if (I2C_B1_GPIO == GPIOH)
__HAL_RCC_GPIOH_CLK_ENABLE();
else
TRACE("I2C ERROR: HAL_I2C_MspInit() I2C_GPIO misconfiguration");
TRACE("I2C B1 ERROR: HAL_I2C_MspInit() I2C_GPIO misconfiguration");
#if defined(IMU_LSM6DS33)
if (I2C_B2_GPIO == GPIOA)
__HAL_RCC_GPIOA_CLK_ENABLE();
else if (I2C_B2_GPIO == GPIOB)
__HAL_RCC_GPIOB_CLK_ENABLE();
else if (I2C_B2_GPIO == GPIOC)
__HAL_RCC_GPIOC_CLK_ENABLE();
else if (I2C_B2_GPIO == GPIOH)
__HAL_RCC_GPIOH_CLK_ENABLE();
else
TRACE("I2C B2 ERROR: HAL_I2C_MspInit() I2C_GPIO misconfiguration");
#endif
if ((hi2c->Instance==I2C1) || (hi2c->Instance==I2C3)) // TP
{
GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SCL_GPIO_PinSource, I2C_TP_GPIO_AF);
GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SDA_GPIO_PinSource, I2C_TP_GPIO_AF);
GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SCL_GPIO_PinSource, I2C_B1_GPIO_AF);
GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SDA_GPIO_PinSource, I2C_B1_GPIO_AF);
GPIO_InitStruct.GPIO_Pin = I2C_TP_SCL_GPIO_PIN | I2C_TP_SDA_GPIO_PIN;
GPIO_InitStruct.GPIO_Pin = I2C_B1_SCL_GPIO_PIN | I2C_B1_SDA_GPIO_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(I2C_TP_GPIO, &GPIO_InitStruct);
GPIO_Init(I2C_B1_GPIO, &GPIO_InitStruct);
}
#if defined(IMU_LSM6DS33)
if (hi2c->Instance==I2C2) // IMU
{
GPIO_PinAFConfig(I2C_IMU_GPIO, I2C_IMU_SCL_GPIO_PinSource, I2C_IMU_GPIO_AF);
GPIO_PinAFConfig(I2C_IMU_GPIO, I2C_IMU_SDA_GPIO_PinSource, I2C_IMU_GPIO_AF);
GPIO_PinAFConfig(I2C_B2_GPIO, I2C_B2_SCL_GPIO_PinSource, I2C_B2_GPIO_AF);
GPIO_PinAFConfig(I2C_B2_GPIO, I2C_B2_SDA_GPIO_PinSource, I2C_B2_GPIO_AF);
GPIO_InitStruct.GPIO_Pin = I2C_IMU_SCL_GPIO_PIN | I2C_IMU_SDA_GPIO_PIN;
GPIO_InitStruct.GPIO_Pin = I2C_B2_SCL_GPIO_PIN | I2C_B2_SDA_GPIO_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(I2C_IMU_GPIO, &GPIO_InitStruct);
GPIO_Init(I2C_B2_GPIO, &GPIO_InitStruct);
}
#endif
/* Peripheral clock enable */
if (I2C_TP == I2C1)
if (I2C_B1 == I2C1)
__HAL_RCC_I2C1_CLK_ENABLE();
else if (I2C_TP == I2C2)
else if (I2C_B1 == I2C2)
__HAL_RCC_I2C2_CLK_ENABLE();
else if (I2C_TP == I2C3)
else if (I2C_B1 == I2C3)
__HAL_RCC_I2C3_CLK_ENABLE();
else
TRACE("I2C ERROR: HAL_I2C_MspInit() I2C misconfiguration");
TRACE("I2C B1 ERROR: HAL_I2C_MspInit() I2C misconfiguration");
#if defined(IMU_LSM6DS33)
/* Peripheral clock enable */
if (I2C_B2 == I2C1)
__HAL_RCC_I2C1_CLK_ENABLE();
else if (I2C_B2 == I2C2)
__HAL_RCC_I2C2_CLK_ENABLE();
else if (I2C_B2 == I2C3)
__HAL_RCC_I2C3_CLK_ENABLE();
else
TRACE("I2C B2 ERROR: HAL_I2C_MspInit() I2C misconfiguration");
#endif
}
/* De-initializes the GPIOx peripheral registers to their default reset values.
@@ -171,15 +198,15 @@ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure the default Alternate Function in current IO */
GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SCL_GPIO_PinSource, 0);
GPIO_PinAFConfig(I2C_TP_GPIO, I2C_TP_SDA_GPIO_PinSource, 0);
GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SCL_GPIO_PinSource, 0);
GPIO_PinAFConfig(I2C_B1_GPIO, I2C_B1_SDA_GPIO_PinSource, 0);
GPIO_InitStructure.GPIO_Pin = I2C_TP_SCL_GPIO_PIN | I2C_TP_SDA_GPIO_PIN;
GPIO_InitStructure.GPIO_Pin = I2C_B1_SCL_GPIO_PIN | I2C_B1_SDA_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; /* Configure a low value for IO Speed */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; /* Configure IO Direction in Input Floating Mode */
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; /* Leave the configuration to Open Drain */
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; /* Deactivate the Pull-up and Pull-down resistor for the current IO */
GPIO_Init(I2C_TP_GPIO, &GPIO_InitStructure);
GPIO_Init(I2C_B1_GPIO, &GPIO_InitStructure);
}
/* Initializes the I2C according to the specified parameters
+9 -9
View File
@@ -34,13 +34,13 @@ bool I2C_LSM6DS33_ReadRegister(uint8_t reg, uint8_t * buf, uint8_t len)
{
if (HAL_I2C_Master_Transmit(&hi2c2, LSM6DS33_I2C_ADDR << 1, &reg, 1, 10000) != HAL_OK)
{
TRACE("I2C IMU ERROR: ReadRegister write reg. address failed");
TRACE("I2C B2 ERROR: ReadRegister write reg. address failed");
return false;
}
if (HAL_I2C_Master_Receive(&hi2c2, LSM6DS33_I2C_ADDR << 1, buf, len, 10000) != HAL_OK)
{
TRACE("I2C IMU ERROR: ReadRegister read register failed");
TRACE("I2C B2 ERROR: ReadRegister read register failed");
return false;
}
return true;
@@ -61,7 +61,7 @@ bool I2C_LSM6DS33_WriteRegister(uint8_t reg, uint8_t * buf, uint8_t len)
if (HAL_I2C_Master_Transmit(&hi2c2, LSM6DS33_I2C_ADDR << 1, uAddrAndBuf, len + 1, 10000) != HAL_OK)
{
TRACE("I2C IMU ERROR: WriteRegister failed");
TRACE("I2C B2 ERROR: WriteRegister failed");
return false;
}
return true;
@@ -146,8 +146,8 @@ void init_imu_i2c(void)
{
TRACE("I2C IMU Init");
hi2c2.Instance = I2C_IMU;
hi2c2.Init.ClockSpeed = I2C_IMU_CLK_RATE;
hi2c2.Instance = I2C_B2;
hi2c2.Init.ClockSpeed = I2C_B2_CLK_RATE;
hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c2.Init.OwnAddress1 = 0;
hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
@@ -157,17 +157,17 @@ void init_imu_i2c(void)
hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c2) != HAL_OK)
{
TRACE("I2C IMU ERROR: HAL_I2C_Init() failed");
TRACE("I2C B2 ERROR: HAL_I2C_Init() failed");
}
// Configure Analogue filter
if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
{
TRACE("I2C IMU ERROR: HAL_I2CEx_ConfigAnalogFilter() failed");
TRACE("I2C B2 ERROR: HAL_I2CEx_ConfigAnalogFilter() failed");
}
// Configure Digital filter
if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK)
{
TRACE("I2C IMU ERROR: HAL_I2CEx_ConfigDigitalFilter() failed");
TRACE("I2C B2 ERROR: HAL_I2CEx_ConfigDigitalFilter() failed");
}
}
@@ -175,7 +175,7 @@ bool imu_lsm6ds33_init(void)
{
uint8_t ui8_reg[2] = {0};
GPIO_SetBits(AUX_IMU_PWR_GPIO, AUX_IMU_PWR_GPIO_PIN); // Turn on AUX1 power
GPIO_SetBits(AUX_I2C_B2_PWR_GPIO, AUX_I2C_B2_PWR_GPIO_PIN); // Turn on AUX1 power
init_imu_i2c();
+14 -14
View File
@@ -489,10 +489,10 @@ void TOUCH_AF_INT_Change(void)
void I2C_Init_Radio(void)
{
TRACE("I2C TP Init");
TRACE("I2C B1 Init");
hi2c1.Instance = I2C_TP;
hi2c1.Init.ClockSpeed = I2C_TP_CLK_RATE;
hi2c1.Instance = I2C_B1;
hi2c1.Init.ClockSpeed = I2C_B1_CLK_RATE;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_16_9;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
@@ -502,17 +502,17 @@ void I2C_Init_Radio(void)
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
{
TRACE("I2C TP ERROR: HAL_I2C_Init() failed");
TRACE("I2C B1 ERROR: HAL_I2C_Init() failed");
}
// Configure Analogue filter
if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
{
TRACE("I2C TP ERROR: HAL_I2CEx_ConfigAnalogFilter() failed");
TRACE("I2C B1 ERROR: HAL_I2CEx_ConfigAnalogFilter() failed");
}
// Configure Digital filter
if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
{
TRACE("I2C TP ERROR: HAL_I2CEx_ConfigDigitalFilter() failed");
TRACE("I2C B1 ERROR: HAL_I2CEx_ConfigDigitalFilter() failed");
}
}
@@ -532,7 +532,7 @@ bool I2C_GT911_WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len)
if (HAL_I2C_Master_Transmit(&hi2c1, GT911_I2C_ADDR << 1, uAddrAndBuf, len + 2, 100) != HAL_OK)
{
TRACE("I2C TP ERROR: WriteRegister failed");
TRACE("I2C B1 ERROR: WriteRegister failed");
return false;
}
return true;
@@ -546,13 +546,13 @@ bool I2C_GT911_ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len)
if (HAL_I2C_Master_Transmit(&hi2c1, GT911_I2C_ADDR << 1, uRegAddr, 2, 10) != HAL_OK)
{
TRACE("I2C TP ERROR: ReadRegister write reg address failed");
TRACE("I2C B1 ERROR: ReadRegister write reg address failed");
return false;
}
if (HAL_I2C_Master_Receive(&hi2c1, GT911_I2C_ADDR << 1, buf, len, 100) != HAL_OK)
{
TRACE("I2C TP ERROR: ReadRegister read reg address failed");
TRACE("I2C B1 ERROR: ReadRegister read reg address failed");
return false;
}
return true;
@@ -677,15 +677,15 @@ bool touchPanelInit(void)
bool I2C_ReInit(void)
{
TRACE("I2C TP ReInit");
TRACE("I2C B1 ReInit");
touchPanelDeInit();
if (HAL_I2C_DeInit(&hi2c1) != HAL_OK)
TRACE("I2C TP ReInit - I2C DeInit failed");
TRACE("I2C B1 ReInit - I2C DeInit failed");
// If DeInit fails, try to re-init anyway
if (!touchPanelInit())
{
TRACE("I2C TP ReInit - touchPanelInit failed");
TRACE("I2C B1 ReInit - touchPanelInit failed");
return false;
}
return true;
@@ -728,7 +728,7 @@ void touchPanelRead()
touchGT911hiccups++;
TRACE("GT911 I2C read XY error");
if (!I2C_ReInit())
TRACE("I2C TP ReInit failed");
TRACE("I2C B1 ReInit failed");
return;
}
@@ -750,7 +750,7 @@ void touchPanelRead()
touchGT911hiccups++;
TRACE("GT911 I2C data read error");
if (!I2C_ReInit())
TRACE("I2C TP ReInit failed");
TRACE("I2C B1 ReInit failed");
return;
}
if (touchState.event == TE_NONE || touchState.event == TE_UP ||
+4 -4
View File
@@ -84,7 +84,7 @@ void boardInit()
AUDIO_RCC_AHB1Periph |
BACKLIGHT_RCC_AHB1Periph |
ADC_RCC_AHB1Periph |
I2C_RCC_AHB1Periph |
I2C_B1_RCC_AHB1Periph |
SD_RCC_AHB1Periph |
HAPTIC_RCC_AHB1Periph |
INTMODULE_RCC_AHB1Periph |
@@ -95,7 +95,7 @@ void boardInit()
TRAINER_RCC_AHB1Periph |
TRAINER_MODULE_RCC_AHB1Periph |
BT_RCC_AHB1Periph |
GYRO_RCC_AHB1Periph |
I2C_B2_RCC_AHB1Periph |
USB_CHARGER_RCC_AHB1Periph,
ENABLE);
@@ -107,7 +107,7 @@ void boardInit()
HAPTIC_RCC_APB1Periph |
INTERRUPT_xMS_RCC_APB1Periph |
TIMER_2MHz_RCC_APB1Periph |
I2C_RCC_APB1Periph |
I2C_B1_RCC_APB1Periph |
SD_RCC_APB1Periph |
TRAINER_RCC_APB1Periph |
TELEMETRY_RCC_APB1Periph |
@@ -116,7 +116,7 @@ void boardInit()
TRAINER_MODULE_RCC_APB1Periph |
MIXER_SCHEDULER_TIMER_RCC_APB1Periph |
BT_RCC_APB1Periph |
GYRO_RCC_APB1Periph,
I2C_B2_RCC_APB1Periph,
ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG |
+50 -50
View File
@@ -1920,67 +1920,67 @@
#define LCD_RCC_APB2Periph 0
// I2C Bus: EEPROM and CAT5137 digital pot for volume control
#define I2C_RCC_APB1Periph RCC_APB1Periph_I2C1
#define I2C I2C1
#define I2C_GPIO_AF GPIO_AF_I2C1
#define I2C_B1_RCC_APB1Periph RCC_APB1Periph_I2C1
#define I2C_B1 I2C1
#define I2C_B1_GPIO_AF GPIO_AF_I2C1
#if defined(PCBXLITE) || defined(PCBX9LITE)
#define I2C_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD)
#define I2C_SPI_GPIO GPIOB
#define I2C_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_WP_GPIO GPIOD
#define I2C_WP_GPIO_PIN GPIO_Pin_7 // PD.07
#define I2C_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_SDA_GPIO_PinSource GPIO_PinSource9
#define I2C_B1_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD)
#define I2C_B1_SPI_GPIO GPIOB
#define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_B1_WP_GPIO GPIOD
#define I2C_B1_WP_GPIO_PIN GPIO_Pin_7 // PD.07
#define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9
#elif defined(PCBX7ACCESS)
#define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_SPI_GPIO GPIOB
#define I2C_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_WP_GPIO GPIOB
#define I2C_WP_GPIO_PIN GPIO_Pin_5 // PB.05
#define I2C_SDA_GPIO_PinSource GPIO_PinSource9
#define I2C_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_B1_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_B1_SPI_GPIO GPIOB
#define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_B1_WP_GPIO GPIOB
#define I2C_B1_WP_GPIO_PIN GPIO_Pin_5 // PB.05
#define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9
#define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8
#elif defined(RADIO_X9DP2019)
#define I2C_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF)
#define I2C_SPI_GPIO GPIOB
#define I2C_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_WP_GPIO GPIOF
#define I2C_WP_GPIO_PIN GPIO_Pin_0 // PF.00
#define I2C_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_SDA_GPIO_PinSource GPIO_PinSource9
#define I2C_B1_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF)
#define I2C_B1_SPI_GPIO GPIOB
#define I2C_B1_SDA_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_B1_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
#define I2C_B1_WP_GPIO GPIOF
#define I2C_B1_WP_GPIO_PIN GPIO_Pin_0 // PF.00
#define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource9
#else
#define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_SPI_GPIO GPIOB
#define I2C_SCL_GPIO_PIN GPIO_Pin_6 // PB.06
#define I2C_SDA_GPIO_PIN GPIO_Pin_7 // PB.07
#define I2C_WP_GPIO GPIOB
#define I2C_WP_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_SCL_GPIO_PinSource GPIO_PinSource6
#define I2C_SDA_GPIO_PinSource GPIO_PinSource7
#define I2C_ADDRESS_VOLUME 0x5C
#define I2C_B1_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
#define I2C_B1_SPI_GPIO GPIOB
#define I2C_B1_SCL_GPIO_PIN GPIO_Pin_6 // PB.06
#define I2C_B1_SDA_GPIO_PIN GPIO_Pin_7 // PB.07
#define I2C_B1_WP_GPIO GPIOB
#define I2C_B1_WP_GPIO_PIN GPIO_Pin_9 // PB.09
#define I2C_B1_SCL_GPIO_PinSource GPIO_PinSource6
#define I2C_B1_SDA_GPIO_PinSource GPIO_PinSource7
#define I2C_B1_ADDRESS_VOLUME 0x5C
#endif
#define I2C_CLK_RATE 400000
#define I2C_B1_CLK_RATE 400000
#define I2C_ADDRESS_EEPROM 0xA2
#define I2C_FLASH_PAGESIZE 64
// Second I2C Bus: IMU
#if defined(PCBXLITES)
#define GYRO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC)
#define GYRO_RCC_APB1Periph RCC_APB1Periph_I2C3
#define I2CX I2C3
#define I2CX_SCL_GPIO GPIOA
#define I2CX_SCL_GPIO_PIN GPIO_Pin_8 // PA.08
#define I2CX_SDA_GPIO GPIOC
#define I2CX_SDA_GPIO_PIN GPIO_Pin_9 // PC.09
#define I2CX_GPIO_AF GPIO_AF_I2C3
#define I2CX_SCL_GPIO_PinSource GPIO_PinSource8
#define I2CX_SDA_GPIO_PinSource GPIO_PinSource9
#define I2CX_SPEED 400000
#define I2C_B2_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC)
#define I2C_B2_RCC_APB1Periph RCC_APB1Periph_I2C3
#define I2C_B2 I2C3
#define I2C_B2_SCL_GPIO GPIOA
#define I2C_B2_SCL_GPIO_PIN GPIO_Pin_8 // PA.08
#define I2C_B2_SDA_GPIO GPIOC
#define I2C_B2_SDA_GPIO_PIN GPIO_Pin_9 // PC.09
#define I2C_B2_GPIO_AF GPIO_AF_I2C3
#define I2C_B2_SCL_GPIO_PinSource GPIO_PinSource8
#define I2C_B2_SDA_GPIO_PinSource GPIO_PinSource9
#define I2C_B2_SPEED 400000
#else
#define GYRO_RCC_AHB1Periph 0
#define GYRO_RCC_APB1Periph 0
#define I2C_B2_RCC_AHB1Periph 0
#define I2C_B2_RCC_APB1Periph 0
#endif
// SD - SPI2
+32 -32
View File
@@ -25,43 +25,43 @@ void eepromWaitEepromStandbyState(void);
void i2cInit()
{
I2C_DeInit(I2C);
I2C_DeInit(I2C_B1);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = I2C_WP_GPIO_PIN;
GPIO_InitStructure.GPIO_Pin = I2C_B1_WP_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(I2C_WP_GPIO, &GPIO_InitStructure);
GPIO_ResetBits(I2C_WP_GPIO, I2C_WP_GPIO_PIN);
GPIO_Init(I2C_B1_WP_GPIO, &GPIO_InitStructure);
GPIO_ResetBits(I2C_B1_WP_GPIO, I2C_B1_WP_GPIO_PIN);
I2C_InitTypeDef I2C_InitStructure;
I2C_InitStructure.I2C_ClockSpeed = I2C_CLK_RATE;
I2C_InitStructure.I2C_ClockSpeed = I2C_B1_CLK_RATE;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = 0x00;
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_Init(I2C, &I2C_InitStructure);
I2C_Cmd(I2C, ENABLE);
I2C_Init(I2C_B1, &I2C_InitStructure);
I2C_Cmd(I2C_B1, ENABLE);
GPIO_PinAFConfig(I2C_SPI_GPIO, I2C_SCL_GPIO_PinSource, I2C_GPIO_AF);
GPIO_PinAFConfig(I2C_SPI_GPIO, I2C_SDA_GPIO_PinSource, I2C_GPIO_AF);
GPIO_PinAFConfig(I2C_B1_SPI_GPIO, I2C_B1_SCL_GPIO_PinSource, I2C_B1_GPIO_AF);
GPIO_PinAFConfig(I2C_B1_SPI_GPIO, I2C_B1_SDA_GPIO_PinSource, I2C_B1_GPIO_AF);
GPIO_InitStructure.GPIO_Pin = I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN;
GPIO_InitStructure.GPIO_Pin = I2C_B1_SCL_GPIO_PIN | I2C_B1_SDA_GPIO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(I2C_SPI_GPIO, &GPIO_InitStructure);
GPIO_Init(I2C_B1_SPI_GPIO, &GPIO_InitStructure);
}
#define I2C_TIMEOUT_MAX 1000
bool I2C_WaitEvent(uint32_t event)
{
uint32_t timeout = I2C_TIMEOUT_MAX;
while (!I2C_CheckEvent(I2C, event)) {
while (!I2C_CheckEvent(I2C_B1, event)) {
if ((timeout--) == 0) return false;
}
return true;
@@ -70,7 +70,7 @@ bool I2C_WaitEvent(uint32_t event)
bool I2C_WaitEventCleared(uint32_t event)
{
uint32_t timeout = I2C_TIMEOUT_MAX;
while (I2C_CheckEvent(I2C, event)) {
while (I2C_CheckEvent(I2C_B1, event)) {
if ((timeout--) == 0) return false;
}
return true;
@@ -89,44 +89,44 @@ bool I2C_EE_ReadBlock(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t NumByteToRea
if (!I2C_WaitEventCleared(I2C_FLAG_BUSY))
return false;
I2C_GenerateSTART(I2C, ENABLE);
I2C_GenerateSTART(I2C_B1, ENABLE);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return false;
I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter);
I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
return false;
I2C_SendData(I2C, (uint8_t)((ReadAddr & 0xFF00) >> 8));
I2C_SendData(I2C_B1, (uint8_t)((ReadAddr & 0xFF00) >> 8));
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING))
return false;
I2C_SendData(I2C, (uint8_t)(ReadAddr & 0x00FF));
I2C_SendData(I2C_B1, (uint8_t)(ReadAddr & 0x00FF));
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED))
return false;
I2C_GenerateSTART(I2C, ENABLE);
I2C_GenerateSTART(I2C_B1, ENABLE);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return false;
I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Receiver);
I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Receiver);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))
return false;
if (NumByteToRead > 1) {
I2C_AcknowledgeConfig(I2C, ENABLE);
I2C_AcknowledgeConfig(I2C_B1, ENABLE);
}
while (NumByteToRead) {
if (NumByteToRead == 1) {
I2C_AcknowledgeConfig(I2C, DISABLE);
I2C_AcknowledgeConfig(I2C_B1, DISABLE);
}
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_RECEIVED))
return false;
*pBuffer++ = I2C_ReceiveData(I2C);
*pBuffer++ = I2C_ReceiveData(I2C_B1);
NumByteToRead--;
}
I2C_GenerateSTOP(I2C, ENABLE);
I2C_GenerateSTOP(I2C_B1, ENABLE);
return true;
}
@@ -184,24 +184,24 @@ bool I2C_EE_PageWrite(uint8_t * pBuffer, uint16_t WriteAddr, uint8_t NumByteToWr
if (!I2C_WaitEventCleared(I2C_FLAG_BUSY))
return false;
I2C_GenerateSTART(I2C, ENABLE);
I2C_GenerateSTART(I2C_B1, ENABLE);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return false;
I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter);
I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))
return false;
I2C_SendData(I2C, (uint8_t)((WriteAddr & 0xFF00) >> 8));
I2C_SendData(I2C_B1, (uint8_t)((WriteAddr & 0xFF00) >> 8));
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING))
return false;
I2C_SendData(I2C, (uint8_t)(WriteAddr & 0x00FF));
I2C_SendData(I2C_B1, (uint8_t)(WriteAddr & 0x00FF));
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING))
return false;
/* While there is data to be written */
while (NumByteToWrite--) {
I2C_SendData(I2C, *pBuffer);
I2C_SendData(I2C_B1, *pBuffer);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING))
return false;
pBuffer++;
@@ -210,7 +210,7 @@ bool I2C_EE_PageWrite(uint8_t * pBuffer, uint16_t WriteAddr, uint8_t NumByteToWr
if (!I2C_WaitEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED))
return false;
I2C_GenerateSTOP(I2C, ENABLE);
I2C_GenerateSTOP(I2C_B1, ENABLE);
return true;
}
@@ -229,14 +229,14 @@ void eepromPageWrite(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t NumByteToWrit
bool I2C_EE_WaitEepromStandbyState(void)
{
do {
I2C_GenerateSTART(I2C, ENABLE);
I2C_GenerateSTART(I2C_B1, ENABLE);
if (!I2C_WaitEvent(I2C_EVENT_MASTER_MODE_SELECT))
return false;
I2C_Send7bitAddress(I2C, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter);
I2C_Send7bitAddress(I2C_B1, I2C_ADDRESS_EEPROM, I2C_Direction_Transmitter);
} while (!I2C_WaitEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_GenerateSTOP(I2C, ENABLE);
I2C_GenerateSTOP(I2C_B1, ENABLE);
return true;
}