stm32-l053r8-em9304: expect active state entered event, debug #0 indidcates wait for RDY

This commit is contained in:
Matthias Ringwald 2017-06-25 11:45:13 +02:00
parent 6e78c2056a
commit 19f11e8d8b

View File

@ -67,57 +67,15 @@ static const uint8_t read_command[] = {
const uint8_t hci_reset[] = { 0x01, 0x03, 0x0c, 0x00 };
void port_main(void){
HAL_GPIO_WritePin(SPI1_CSN_GPIO_Port, SPI1_CSN_Pin, GPIO_PIN_SET);
void read_event(void){
uint8_t status[2];
uint8_t event[10];
while (1){
printf("Reset: \n");
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET);
HAL_Delay(10);
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET);
printf("CMD: Select\n");
// HAL_GPIO_WritePin( GPIOB, GPIO_PIN_6, GPIO_PIN_RESET );
// HAL_GPIO_WritePin( GPIOB, GPIO_PIN_6, GPIO_PIN_SET );
// chip select
HAL_GPIO_WritePin(SPI1_CSN_GPIO_Port, SPI1_CSN_Pin, GPIO_PIN_RESET);
// wait for RDY
printf("CMD: Wait for ready\n");
while (HAL_GPIO_ReadPin(SPI1_RDY_GPIO_Port, SPI1_RDY_Pin) == GPIO_PIN_RESET){};
printf("CMD: Send write request\n");
// send write command
HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) write_command, status, sizeof(write_command), HAL_MAX_DELAY);
printf("CMD: STS1 0x%02X, STS2 0x%02X\n", status[0], status[1]);
// check slave status
if (status[0] != STS_SLAVE_READY) continue;
printf("CMD: Slave ready\n");
// check size
if (status[1] < sizeof(hci_reset)) continue;
printf("CMD: Enough buffer, send\n");
// send command
HAL_SPI_Transmit(&hspi1, (uint8_t*) hci_reset, sizeof(hci_reset), HAL_MAX_DELAY);
// done
HAL_GPIO_WritePin(SPI1_CSN_GPIO_Port, SPI1_CSN_Pin, GPIO_PIN_SET);
printf("CMD: Done\n");
// wait for RDY
printf("EVT: Wait for ready\n");
HAL_GPIO_WritePin(DEBUG_0_GPIO_Port, DEBUG_0_Pin, GPIO_PIN_SET);
// printf("EVT: Wait for ready\n");
while (HAL_GPIO_ReadPin(SPI1_RDY_GPIO_Port, SPI1_RDY_Pin) == GPIO_PIN_RESET){};
HAL_GPIO_WritePin(DEBUG_0_GPIO_Port, DEBUG_0_Pin, GPIO_PIN_RESET);
// chip select
printf("EVT: Select\n");
@ -142,6 +100,56 @@ void port_main(void){
printf("\n");
printf("EVT: Done\n");
}
void port_main(void){
HAL_GPIO_WritePin(SPI1_CSN_GPIO_Port, SPI1_CSN_Pin, GPIO_PIN_SET);
uint8_t status[2];
while (1){
printf("Reset: \n");
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET);
HAL_Delay(10);
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET);
read_event();
// chip select
printf("CMD: Select\n");
HAL_GPIO_WritePin(SPI1_CSN_GPIO_Port, SPI1_CSN_Pin, GPIO_PIN_RESET);
// wait for RDY
HAL_GPIO_WritePin(DEBUG_0_GPIO_Port, DEBUG_0_Pin, GPIO_PIN_SET);
// printf("CMD: Wait for ready\n");
while (HAL_GPIO_ReadPin(SPI1_RDY_GPIO_Port, SPI1_RDY_Pin) == GPIO_PIN_RESET){};
HAL_GPIO_WritePin(DEBUG_0_GPIO_Port, DEBUG_0_Pin, GPIO_PIN_RESET);
printf("CMD: Send write request\n");
// send write command
HAL_SPI_TransmitReceive(&hspi1, (uint8_t*) write_command, status, sizeof(write_command), HAL_MAX_DELAY);
printf("CMD: STS1 0x%02X, STS2 0x%02X\n", status[0], status[1]);
// check slave status
if (status[0] != STS_SLAVE_READY) continue;
printf("CMD: Slave ready\n");
// check size
if (status[1] < sizeof(hci_reset)) continue;
printf("CMD: Enough buffer, send HCI Reset\n");
// send command
HAL_SPI_Transmit(&hspi1, (uint8_t*) hci_reset, sizeof(hci_reset), HAL_MAX_DELAY);
// done
HAL_GPIO_WritePin(SPI1_CSN_GPIO_Port, SPI1_CSN_Pin, GPIO_PIN_SET);
printf("CMD: Done\n");
read_event();
}
}