|
@@ -114,15 +114,15 @@ void DALLAS_DmaInit(void)
|
|
|
TxDMA_Channel = DMA_Channel_4;
|
|
|
} else if (ow_sensor[i].uart_addr == USART6) {
|
|
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
|
|
|
- RxDMA_Stream = DMA1_Stream1;
|
|
|
- TxDMA_Stream = DMA1_Stream6;
|
|
|
+ RxDMA_Stream = DMA2_Stream1;
|
|
|
+ TxDMA_Stream = DMA2_Stream6;
|
|
|
RxDMA_Channel = DMA_Channel_5;
|
|
|
TxDMA_Channel = DMA_Channel_5;
|
|
|
}
|
|
|
|
|
|
/* DMA на чтение */
|
|
|
DMA_DeInit(RxDMA_Stream);
|
|
|
- ow_sensor[i].DMA_InitStructureRx.DMA_Channel = RxDMA_Stream;
|
|
|
+ ow_sensor[i].DMA_InitStructureRx.DMA_Channel = RxDMA_Channel;
|
|
|
ow_sensor[i].DMA_InitStructureRx.DMA_PeripheralBaseAddr = (uint32_t)&ow_sensor[i].uart_addr->DR;
|
|
|
ow_sensor[i].DMA_InitStructureRx.DMA_Memory0BaseAddr = (uint32_t)&ow_sensor[i].sensorBuf;
|
|
|
ow_sensor[i].DMA_InitStructureRx.DMA_DIR = DMA_DIR_PeripheralToMemory;
|
|
@@ -138,7 +138,7 @@ void DALLAS_DmaInit(void)
|
|
|
|
|
|
/* DMA на запись */
|
|
|
DMA_DeInit(TxDMA_Stream);
|
|
|
- ow_sensor[i].DMA_InitStructureTx.DMA_Channel = TxDMA_Stream;
|
|
|
+ ow_sensor[i].DMA_InitStructureTx.DMA_Channel = TxDMA_Channel;
|
|
|
ow_sensor[i].DMA_InitStructureTx.DMA_PeripheralBaseAddr = &ow_sensor[i].uart_addr->DR;
|
|
|
ow_sensor[i].DMA_InitStructureTx.DMA_Memory0BaseAddr = (uint32_t)&ow_sensor[i].sensorBuf;
|
|
|
ow_sensor[i].DMA_InitStructureTx.DMA_DIR = DMA_DIR_MemoryToPeripheral;
|
|
@@ -187,7 +187,7 @@ uint8_t DALLAS_SensorReset(t_sensor_list_t sensor)
|
|
|
{
|
|
|
uint8_t presence;
|
|
|
|
|
|
- uart_hw_init(ow_sensor[sensor].uart_addr, DALLAS_SENSOR_RST_UART_BAUD,
|
|
|
+ uart_config_reinit(ow_sensor[sensor].uart_addr, DALLAS_SENSOR_RST_UART_BAUD,
|
|
|
DALLAS_SENSOR_UART_WORD_LEN, DALLAS_SENSOR_UART_PARITY, DALLAS_SENSOR_UART_STOP_BIT);
|
|
|
|
|
|
// отправляем 0xf0 на скорости 9600
|
|
@@ -198,7 +198,7 @@ uint8_t DALLAS_SensorReset(t_sensor_list_t sensor)
|
|
|
|
|
|
presence = USART_ReceiveData(ow_sensor[sensor].uart_addr);
|
|
|
|
|
|
- uart_hw_init(ow_sensor[sensor].uart_addr, DALLAS_SENSOR_UART_BAUD, DALLAS_SENSOR_UART_WORD_LEN,
|
|
|
+ uart_config_reinit(ow_sensor[sensor].uart_addr, DALLAS_SENSOR_UART_BAUD, DALLAS_SENSOR_UART_WORD_LEN,
|
|
|
DALLAS_SENSOR_UART_PARITY, DALLAS_SENSOR_UART_STOP_BIT);
|
|
|
|
|
|
if (presence != 0xf0) {
|
|
@@ -228,27 +228,34 @@ uint8_t DALLAS_Send(t_sensor_list_t sensor, uint8_t sendReset, uint8_t *command,
|
|
|
uint8_t cLen, uint8_t *data, uint8_t dLen, uint8_t readStart)
|
|
|
{
|
|
|
uint32_t timeOutCounter = 0;
|
|
|
+ uint32_t DMA_FLAG_TCIF = 0;
|
|
|
DMA_Stream_TypeDef *RxDMA_Stream = NULL;
|
|
|
DMA_Stream_TypeDef *TxDMA_Stream = NULL;
|
|
|
|
|
|
if (ow_sensor[sensor].uart_addr == USART1) {
|
|
|
+ DMA_FLAG_TCIF = DMA_FLAG_TCIF2;
|
|
|
RxDMA_Stream = DMA1_Stream2;
|
|
|
TxDMA_Stream = DMA1_Stream7;
|
|
|
} else if (ow_sensor[sensor].uart_addr == USART2) {
|
|
|
+ DMA_FLAG_TCIF = DMA_FLAG_TCIF5;
|
|
|
RxDMA_Stream = DMA1_Stream5;
|
|
|
TxDMA_Stream = DMA1_Stream6;
|
|
|
} else if (ow_sensor[sensor].uart_addr == USART3) {
|
|
|
+ DMA_FLAG_TCIF = DMA_FLAG_TCIF1;
|
|
|
RxDMA_Stream = DMA1_Stream1;
|
|
|
TxDMA_Stream = DMA1_Stream3;
|
|
|
} else if (ow_sensor[sensor].uart_addr == UART4) {
|
|
|
+ DMA_FLAG_TCIF = DMA_FLAG_TCIF2;
|
|
|
RxDMA_Stream = DMA1_Stream2;
|
|
|
TxDMA_Stream = DMA1_Stream4;
|
|
|
} else if (ow_sensor[sensor].uart_addr == UART5) {
|
|
|
+ DMA_FLAG_TCIF = DMA_FLAG_TCIF0;
|
|
|
RxDMA_Stream = DMA1_Stream0;
|
|
|
TxDMA_Stream = DMA1_Stream7;
|
|
|
} else if (ow_sensor[sensor].uart_addr == USART6) {
|
|
|
- RxDMA_Stream = DMA1_Stream1;
|
|
|
- TxDMA_Stream = DMA1_Stream6;
|
|
|
+ DMA_FLAG_TCIF = DMA_FLAG_TCIF1;
|
|
|
+ RxDMA_Stream = DMA2_Stream1;
|
|
|
+ TxDMA_Stream = DMA2_Stream6;
|
|
|
}
|
|
|
|
|
|
/* если требуется сброс - сбрасываем и проверяем на наличие устройств */
|
|
@@ -280,7 +287,7 @@ uint8_t DALLAS_Send(t_sensor_list_t sensor, uint8_t sendReset, uint8_t *command,
|
|
|
DMA_Cmd(TxDMA_Stream, ENABLE);
|
|
|
|
|
|
|
|
|
- while (DMA_GetFlagStatus(RxDMA_Stream, DMA_FLAG_TCIF5) == RESET) {
|
|
|
+ while (DMA_GetFlagStatus(RxDMA_Stream, DMA_FLAG_TCIF) == RESET) {
|
|
|
|
|
|
timeOutCounter++;
|
|
|
if (timeOutCounter > DALLAS_TIME_OUT) {
|