after set i2c id can be effective immediately

This commit is contained in:
Guo Yaoxin
2022-04-17 18:20:22 +08:00
parent 6c2f7a2078
commit c11d573f7e
6 changed files with 21 additions and 5 deletions
@@ -38,6 +38,7 @@ extern uint8_t i2cDataTx[8];
/* USER CODE BEGIN Prototypes */
void MY_I2C1_Init(uint32_t _id);
void set_id(uint8_t _id);
void I2C_SlaveDMARxCpltCallback();
/* USER CODE END Prototypes */
+1 -1
View File
@@ -71,7 +71,7 @@ extern "C" {
void Error_Handler(void);
/* USER CODE BEGIN EFP */
void TIM14_PeriodElapsedCallback();
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
+1 -1
View File
@@ -39,7 +39,7 @@ void MX_TIM3_Init(void);
void MX_TIM14_Init(void);
/* USER CODE BEGIN Prototypes */
void TIM14_PeriodElapsedCallback();
/* USER CODE END Prototypes */
#ifdef __cplusplus
+10 -1
View File
@@ -45,7 +45,7 @@ void MX_GPIO_Init(void)
/* GPIO Ports Clock Enable */
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOF);
//LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
/**/
LL_GPIO_ResetOutputPin(GPIOF, LL_GPIO_PIN_0);
@@ -69,6 +69,15 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(GPIOF, &GPIO_InitStruct);
/*for debug*/
// LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
// GPIO_InitStruct.Pin = LL_GPIO_PIN_1;
// GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
// GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
// GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
// GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
// LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
/* USER CODE BEGIN 2 */
+7 -2
View File
@@ -126,12 +126,17 @@ void MY_I2C1_Init(uint32_t _id)
/* USER CODE BEGIN I2C1_Init 2 */
LL_I2C_Enable(I2C1);
LL_I2C_EnableIT_ADDR(I2C1);
LL_I2C_AcknowledgeNextData(I2C1,LL_I2C_ACK);
LL_I2C_EnableDMAReq_RX(I2C1);
LL_I2C_EnableDMAReq_TX(I2C1);
/* USER CODE END I2C1_Init 2 */
}
void set_id(uint8_t _id)
{
LL_I2C_DisableOwnAddress1(I2C1);
LL_I2C_SetOwnAddress1(I2C1,_id,LL_I2C_OWNADDRESS1_7BIT);
LL_I2C_EnableOwnAddress1(I2C1);
}
/* USER CODE END 1 */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
@@ -133,6 +133,7 @@ void I2C_SlaveDMARxCpltCallback()
{
boardConfig.nodeId = i2cDataRx[1];
boardConfig.configStatus = CONFIG_COMMIT;
set_id(boardConfig.nodeId);
auto* b = (unsigned char*) &(motor.angle);
for (int i = 0; i < 4; i++)
i2cDataTx[i + 1] = *(b + i);