STM32F407と3 つの HC-05 Bluetooth モジュールを使用しています。1 つのマスターと 2 つのスレーブを同時に使用しようとしています。どのスレーブもマスターに接続できます。2 つのスレーブに単純なアルゴリズムを実装しようとしています。マスターが接続しているデバイスのアドレスを10秒間隔で変更し、両方を同時に接続しようとすると、マスターが常にATモードのままになります。高速で点滅することはありません (高速で点滅する場合は、AT モードではなく、デバイスを検索していることを示します)。また、私のスレーブはデータを送信します。マスターの問題は何ですか?
ここにデータシートがあります
int main(void)
{
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART6_UART_Init();
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); //Reset HC-05
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET);// set high to 'key' pin to enter AT Mode
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//set low to reset pin
HAL_Delay(3000);
HAL_UART_Transmit(&huart6,(uint8_t*)"AT+ROLE=1\r\n",sizeof("AT+ROLE=1\r\n")-1,100);
HAL_Delay(1000);
HAL_UART_Transmit(&huart6(uint8_t*)"AT+CMODE=0\r\n",sizeof("AT+CMODE=0\r\n")-1,100);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//exit AT mode
/* USER CODE BEGIN 2 */
__HAL_UART_ENABLE_IT(&huart6,UART_IT_RXNE); //enable usart interrupt
/* USER CODE END 2 */
while (1)
{
/* FIRST SLAVE */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//i entered AT mode to change slave addres
HAL_UART_Transmit(&huart6(uint8_t*)"AT+BIND=98D3,31,F63543\r\n",sizeof("AT+BIND=98D3,31,F63543\r\n")-1,100); //address of slave
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//exit AT mode
HAL_Delay(50000);//wait for data transmission
/*SECOND SLAVE */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//i entered AT mode to change slave addres
HAL_UART_Transmit(&huart6(uint8_t*)"AT+BIND=98D3:31:F537A2\r\n",sizeof("AT+BIND=98D3:31:F537A2\r\n")-1,100); //address of slave
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);//exit AT mode
HAL_Delay(50000);//wait for data transmission
}
}
スレーブ構成:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);// reset hc-05
delay_ms(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);// set high to 'key' pin to enter AT
delay_ms(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);// entered AT mode
delay_ms(3000);
HAL_UART_Transmit(&huart1,(uint8_t*)"AT+ROLE=0\r\n",sizeof("AT+ROLE=0\r\n")-1,100);
delay_ms(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);//exit AT mode