|
@@ -253,38 +253,49 @@ static void RTC_Init(void) {
|
|
|
|
|
|
|
|
|
while ( I2C1->ISR & I2C_ISR_BUSY ) {};
|
|
|
+ I2C2->CR1 &= ~I2C_CR1_PE;
|
|
|
|
|
|
|
|
|
i2cBufTX[0] = DS3231_CONTROL_ADDR;
|
|
|
- i2cBufTX[1] = DS3231_CONV;
|
|
|
+ i2cBufTX[1] = 0x0;
|
|
|
+ i2cBufTX[2] = 0x0;
|
|
|
+
|
|
|
+ LL_I2C_SetSlaveAddr(I2C1, I2C_ADDR_RTC);
|
|
|
+ LL_I2C_SetTransferRequest(I2C1, LL_I2C_REQUEST_WRITE);
|
|
|
+ LL_I2C_SetTransferSize(I2C1, 3);
|
|
|
+ LL_I2C_EnableDMAReq_TX(I2C1);
|
|
|
+ I2C2->CR1 |= I2C_CR1_PE;
|
|
|
+ LL_I2C_GenerateStartCondition(I2C1);
|
|
|
|
|
|
|
|
|
|
|
|
- I2C1->CR2 = ( I2C_CR2_AUTOEND | I2C_ADDR_RTC << I2C_CR2_SADD_Pos | 2 << I2C_CR2_NBYTES_Pos );
|
|
|
+
|
|
|
|
|
|
- I2C1->CR1 |= ( I2C_CR1_TXDMAEN );
|
|
|
+
|
|
|
|
|
|
- I2C1->CR2 |= ( I2C_CR2_START );
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
|
static void RTC_ReadAll(void) {
|
|
|
+
|
|
|
while ( I2C1->ISR & I2C_ISR_BUSY ) {};
|
|
|
|
|
|
LL_I2C_SetSlaveAddr(I2C1, I2C_ADDR_RTC);
|
|
|
LL_I2C_SetTransferRequest(I2C1, LL_I2C_REQUEST_WRITE);
|
|
|
LL_I2C_SetTransferSize(I2C1, 1);
|
|
|
- i2cBufTX[0] = DS3231_CALENDAR_ADDR;
|
|
|
+ i2cBufTX[0] = DS3231_TIME_CAL_ADDR;
|
|
|
LL_I2C_EnableDMAReq_TX(I2C1);
|
|
|
LL_I2C_GenerateStartCondition(I2C1);
|
|
|
-
|
|
|
+*/
|
|
|
while ( I2C1->ISR & I2C_ISR_BUSY ) {};
|
|
|
|
|
|
Flag.I2C_RX_End = 0;
|
|
|
Flag.I2C_TX_End = 0;
|
|
|
-
|
|
|
+
|
|
|
+ LL_I2C_SetSlaveAddr(I2C1, I2C_ADDR_RTC);
|
|
|
LL_I2C_SetTransferRequest(I2C1, LL_I2C_REQUEST_READ);
|
|
|
- LL_I2C_SetTransferSize(I2C1, 7);
|
|
|
+ LL_I2C_SetTransferSize(I2C1, 0x12);
|
|
|
LL_I2C_EnableDMAReq_RX(I2C1);
|
|
|
LL_I2C_GenerateStartCondition(I2C1);
|
|
|
}
|
|
@@ -404,6 +415,10 @@ static void MX_I2C1_Init(void)
|
|
|
|
|
|
LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_3, LL_DMA_MDATAALIGN_BYTE);
|
|
|
|
|
|
+
|
|
|
+ NVIC_SetPriority(I2C1_IRQn, 0);
|
|
|
+ NVIC_EnableIRQ(I2C1_IRQn);
|
|
|
+
|
|
|
|
|
|
|
|
|
LL_DMA_EnableIT_TC(DMA1, LL_DMA_CHANNEL_2);
|
|
@@ -428,6 +443,7 @@ static void MX_I2C1_Init(void)
|
|
|
LL_I2C_DisableGeneralCall(I2C1);
|
|
|
LL_I2C_EnableClockStretching(I2C1);
|
|
|
|
|
|
+ LL_I2C_EnableIT_NACK(I2C1);
|
|
|
|
|
|
|
|
|
|