임베디드/고추건조기

GPIO >SPI

twoweeks-within 2024. 12. 3. 19:18

stm32 cubeide 

프로젝트 복사해도
복사한 파일의 값을 변경하면 원래 파일의 정보가 바뀜
 > metadata 등의 관계에의해
+ 백업 잘해두자,, 다 날려버림

해결책
1. second 로 실행시 ide에 first라고 뜨는데 그거 제거
    ** 이때 contents on disk 체크 박스 꼭 해제
2. import projects
3. general > existing projects into workspace
4. second > browse
5. ioc 이름도 secoond 로 변경
// 속성에서 잘 확인
6. 디버그 속성에서도 second.elf로 변경
7. project > clean
----------------------------------------------------------------

SPI로 제어해보자

각 pin 을 눌러보면 몇번 SPI로 제어하는지 알수 있음
> SPI2
+ 핀 마다 지원하는 CLK, OUT , INPUT 이 따로 있음
 >> PB13으로 SCLK 변경
      PB15 : MOSI
     PB14 : MISO
or
SPI2 > Transmit only master
> PB14만 GPIO로 변경 > RCLK 로 쓰기위해

>>

void send(uint8_t X) {
for (int i = 8; i >= 1; i--)
  {
    if (X & 0x80)
    {
      HAL_GPIO_WritePin(FND_DIO_GPIO_Port, FND_DIO_Pin, HIGH);
    }
    else
    {
     HAL_GPIO_WritePin(FND_DIO_GPIO_Port, FND_DIO_Pin, LOW);
    }
    X <<= 1;
    HAL_GPIO_WritePin(FND_SCLK_GPIO_Port, FND_SCLK_Pin, LOW);
    HAL_GPIO_WritePin(FND_SCLK_GPIO_Port, FND_SCLK_Pin, HIGH);
  }

}

send함수 변경

함수원형
HAL_SPI_Transmit(hspi, pData, Size, Timeout)
hspi : SPI_HandleTypeDef * hspi
>
SPI_HandleTypeDef hspi2; // 자동선언
hspi2 구조체에는 hspi 에 대한 정보 담김, SPI2 설정들,,

init_fnd(&hspi2); // fnd 에 대해 initialize 해둔 함수에 넣어주기위해

함수구현
void init_fnd(SPI_HandleTypeDef * hspi){
  mhspi = hspi;
_LED_0F[0] = 0xC0; //0
_LED_0F[1] = 0xF9; //1
   ""
   ""
}

함수 호출

HAL_SPI_Transmit(mhspi, &X, 1, 100);

>> 칩에서 제공 SPI로 하면 CLK 간격이 일정함
GPIO 로 하면 간격이 뒤죽박죽


'임베디드 > 고추건조기' 카테고리의 다른 글

1-wire, 프로토콜  (0) 2024.12.06
온도센서  (0) 2024.12.05
FND 분석  (0) 2024.12.02
SPI통신  (0) 2024.12.01
FND 모듈제어  (0) 2024.12.01