상세 컨텐츠

본문 제목

[STM32]8bit Serial-in/Parallel-out Shift register Control

Firmware/STM

by StephanosJ 2022. 12. 12. 13:38

본문

반응형

1. PC8/PC6/PC7 Pin을 GPIO_Output Pin으로 설정합니다.

 

2. SDI에 8개의 Data를 Write합니다.

 

3. SDI에서 1개의 Data를 Wirte할 때마다 Clock를 발생합니다.

 

4. 8개의 Data를 모두 Wirte후에는 Latch를 발생합니다.

 

예를 들어

OUT1 > LOW

OUT2 > HIGH

OUT3 > LOW

OUT4 > HIGH

OUT5 > LOW

OUT6 > HIGH

OUT7 > LOW

OUT8 >HIGH

를 출력하고 싶다면

Time 순서

uint8_t  sdi_data = 0xAA;                                                                                        // 0b10101010

for(uint8_t i=0; i<8; i++)
{
    if( (sdi_data << i) & 0x80 )                                                                                  // sdi pin high 또는 low 
    {
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
    }
    else
    {
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,, GPIO_PIN_RESET);
    }
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_SET);                       // clk pin high
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET);                  // clk pin low
}
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);                           // latch pin high                
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);                      // latch pin low

반응형

관련글 더보기