STR711 SPI0사용시 주의사항
잘 사용하던 SPI가 문제가 생겼다. SPI1은 잘동작하는데 SPI0는 클럭이 나오지 않는다.
이 문제로 2시간 정도 까먹었다…ㅠㅠ
역시나 항상 많이 사용하지 않는 MCU는 복병은 존재한다. 아무 문제도 아닌것으로 이렇게 시간을 허비 하다니…
SPI0를 사용할 경우 BSPI_BSPI0Conf(ENABLE)를 호출해 주어야 enable가능하다. 아마도 SPI0는 여러 기능들이 있어 선택을 해 주어야 하기 때문인 것 같다.
Bspi.h 파일에 정의
/*******************************************************************************
* Function Name : BSPI_BSPI0Conf
* Description : configure STR71x on BSPI0 mode.
* Input 2 : NewState: specifies the status of the BSPI
* : NewState value must be either ENABLE or DISABLE:
* : ENABLE: the specified BSPI0 peripheral will be enabled.
* : DISABLE: the specified BSPI0 peripheral will be disabled..
* Output : SPI0 EN bit in BOOTCR.
* Return : None.
*******************************************************************************/
inline void BSPI_BSPI0Conf(FunctionalState NewState)
{
if (NewState == ENABLE) PCU->BOOTCR |= 0x04; else PCU->BOOTCR &= ~0x04;
}
SPI 클럭구조
SPI0, SPI1모두 APB1에 연결되어 있다.
STR711 SPI구조
SPI초기화 예제
->여기서도 BSPI_BSPI0Conf(ENABLE)에 관련해 언급한 부분이 없다. 이것때문에 고생했는데...