1. PA0(Latch), PA1(clk) Pin을 GPIO_Output Pin으로 설정합니다.
2. PA2(SDO) Pin을 GPIO_Input Pin으로 설정합니다.
3. Latch를 LOW > HIGH를 Write한다.
4. Latch이후 부터 SDO pin을 읽어서 Data를 확인할 수 있다.
(Latch한 시점의 IN8~IN1의 값을 Clk발생 할때마다 shift되어 Data를 읽어온다)
예를 들어
IN1 > LOW
IN2 > HIGH
IN3 > LOW
IN4 > HIGH
IN5 > LOW
IN6 > HIGH
IN7 > LOW
IN8 >HIGH
일 경우
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); //latch low
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); //latch high
for(uint8_t i=0; i<8; i++) // latch한 시점의 IN8~IN1 pin의 상태를 읽어온다.
{
uint8_t bitVal = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2); // sdo pin read
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); //clk high
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); //clk low
}
[STM] TIM7(Timer) 타이머 인터럽트 (0) | 2022.12.23 |
---|---|
[STM32]8bit Serial-in/Parallel-out Shift register Control (0) | 2022.12.12 |
[STM32]Uart 통신 (HAL_UART_Receive_IT/HAL_UART_Transmit) & printf (0) | 2022.12.09 |
[STM32]GPIO_Output/GPIO_Input/GPIO_EXTI & Systick (0) | 2022.12.09 |
[STM32]IDE Project 생성하기 (0) | 2022.12.08 |