STM32F401 로 Cube-IDE 테스트
포트 설정
클럭은 84M 로 하면 최대 42M로만 설정됨.
인터럽트 설정
DMA 설정
USE LFN 만 Enable
SD 카드 확인 입력 포트 설정안하면 위에 같이 경고창 나옴.
================== 추가사항 =====
STM32F4 펌웨어 버그가 있는것 같다.
1.26.2 에서 잘 동작하는데.. 1.27.1로 업데이트 하고 SD 카드 마운트 하면 FR_NOT_READY 를 리턴한다.
이것 때문에 H/W 디버깅만 계속하고..하루종일 개고생함...참나...
HAL 라이브러리 비교하면서 원인 찾으려다..시간이 없어서...나중에 확인해봐야 겠다..
여기 유사한 내용 있음..이런..ㅡㅡ;
디버깅에서 test 를 1로 설정하면 kts12.txt 에 틱값 를 저장한다.
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(100);
if(test == 1){
retSD = f_mount(&SDFatFS, SDPath, 1);
if(retSD == FR_OK)
{
// d_msg("f_mount OK %d\r\n", retSD);
}
else {
//d_msg("f_mount NG %d\r\n", retSD);
}
retSD = f_open(&SDFile, "kts1.txt", FA_OPEN_APPEND|FA_READ|FA_WRITE);
if(retSD == FR_OK)
{
//d_msg("f_open OK %d\r\n", retSD);
sprintf(SD_data, "\r\n%ld", uwTick);
retSD = f_write(&SDFile,SD_data, 10, &bw);
if(retSD == FR_OK){
//d_msg("f_write OK %d\r\n", retSD);
f_close(&SDFile);
}
}
else {
// d_msg("f_open NG %d\r\n", retSD);
}
test = 0;
}
}
/* USER CODE END 3 */
}
============= 23.03.25 ==============
stm32f215 에서 테스트
펌웨어 버전은 1.9.0
4 bits bus 설정하면 자동 생성 코드가 하기와 같이 1B로 적용됨.
HAL_SD_InitCard
1B로 설정된 부분을 4B로 변경해야 정상 작동함.
구형 버전인지..FA_OPEN_APPEND 이게 없음..
retSD = f_mount(&SDFatFS, (TCHAR const*)SDPath, 1);
SD 카드 종류(용량)에 따라 1로 적용하면 FR_NOT_READY 발생되는데 저장은 정상적임..
0으로 설정할 경우.. FR_OK 가 되긴 하는데.. 저장이 안됨..
mount 리턴값은 확인 하지 않는게 좋을듯..
특이한건 .... 동일한 코드 Keil 컴파일러(사이즈제한 평가판)는 동작에 아무 문제 없다.
(Cube IDE만 동작 불안정함.)
최종 결론.
FW 버전차이로 문제되는 것, SDIO_BUS_WIDE_4B 도 변경안해도... Keil 은 잘됨..
대신 4 bit 동작은 실제 스코프로 확인해봐야 할듯.
Keil 컴파일러 사용해야 함.
FW F2 Ver1.9.3 최근 버전으로 cube, keil..테스트 코드.
혹시나 해서 cube ide 1.12.0 최근 버전으로 했더니 역시 안됨..ㅎㅎ
한달가량 H/W 문제로 보고 디버깅한 시간이 아깝다. ㅜㅜ
'Firmware > STM32' 카테고리의 다른 글
stm32f401 Virtual COM port / USB CDC 테스트 (0) | 2023.03.16 |
---|---|
stm32f103 Virtual COM port (USB CDC) / CAN bus (0) | 2023.03.12 |
큐브 모니터 사용법 STM32CubeMonitor (0) | 2022.06.16 |
keil cubemx 없이 uart 추가. (0) | 2021.10.09 |
cubemx CAN 속도 설정 (0) | 2021.03.09 |