PSoC6 BLE Prototyping Kit를 PSoC Creator로 L치카

PSoC6 메모
PSoC6에는 지금까지(PSoC3/4/5LP)용의 개발 환경 PSoC Creator와는 별도로 ModusToolbox라는 eclipse 기반의 개발 환경이 준비되어 있다.
하지만, 지금까지의 PSoC 유저에게 있어서는 PSoC Crator 쪽이 달라지기 쉽기 때문에, PSoC Creator로 L치카할 때까지를 정리한다.

개발 보드



CY8CPROTO-063-BLE PSoC6 BLE Prototyping Kit
KitProg2가 실려 있으므로 라이터를 별도 준비할 필요는 없다.

비고: CY8CPROTO-062-4343W PSoC 6 Wi-Fi BT Prototyping Kit 는 현재 PSoC Creator에 대응하고 있지 않고, ModusToolbox만으로의 개발이 되므로 주의.

환경 구축


  • PSoC Creator 4.2
  • PSoC PDL 3.1.0
  • PSoC Programmer 3.28.3

  • PSoC Creator 도입



    PSoC Creator
    다운로드하려면 Cypress의 계정 취득/로그인이 필요.
    2019/6/8 시점에서는 4.2가 최신.

    PSoC PDL 도입



    Peripheral Driver Library
    구성 요소와 다양한 미들웨어가 포함됩니다.
    PSoC Creator와 마찬가지로 다운로드에는 로그인이 필요.
    2019/6/8 시점에서는 3.1.0이 최신

    추가



    PSoC Creator를 열고 Tools->Find new devices를 선택하면 PSoC6의 BLE 대응 IC군이 PSoC Creator에서 선택할 수 있게 된다.
    이 절차를 거치지 않으면 장치 목록에 CYBLE_416045-02가 나오지 않으므로주의.
    추가 여기까지

    PDL을 설치하면 PSoC Creator를 열고 Tools->Option->Project Manegement 탭의 PDL v3(PSoC 6 devices) location에 설치한 PDL의 디렉토리를 넣어준다.

    참고 : PSOC CREATOR ADDS SUPPORT FOR PSOC 63-BASED EZ-BLE™ BLUETOOTH MODULE

    PSoC Programmer 도입



    PSoC Programmer
    이 페이지에서 PSoC Programmer를 떨어 뜨린다.
    Cypress Programmer는 ModusToolbox용 쓰기 애플리케이션인 것 같다.
    2019/6/8 시점에서는 3.28.3이 최신.

    주의



    PSoC 기존 사용자의 경우, 상기 3점 세트가 이미 도입되어 있는 경우가 있다.
    이 경우 PSoC Creator는 4.2, PSoC PDL은 3.0 이상, PSoC Programmer는 3.27.3 이상이 아니면 뭔가 에러를 토한다.
    필자는 PSoC Programmer의 업데이트를 잊어 1시간 녹였다.

    L치카



    PSoC6 BLE Prototyping Kit에는 빨강과 초록 2개의 유저 LED가 실장되고 있다.
    이번에는 M0+로 녹색 LED를, M4로 빨간 LED를 치카치카시킨다.

    TopDesign



    TopDesign은 다음과 같이 한다.
    Digital Output을 2개 늘어놓고, LED_1/2라고 라벨을 붙인다.

    데이터 시트를 보면 알 수 있지만, 이 개발 보드의 LED 구현은 위의 그림과 같이 sink가 되어 있다. 실제 Output과 LED의 점등이 반전되므로 주의.

    Pin 할당



    Pin 설정은 다음과 같이 한다.
    녹색 LED가 7.1, 빨간색 LED가 6.3 핀이므로 그렇게 할당합니다.
    실제의 보드에도 핀 번호가 실크로 흔들어 있어 알기 쉽다.



    M0+ 코드



    main_cm0p.c
    #include "project.h"
    
    int main(void)
    {
        __enable_irq(); /* Enable global interrupts. */
        /* Enable CM4.  CY_CORTEX_M4_APPL_ADDR must be updated if CM4 memory layout is changed. */
        Cy_SysEnableCM4(CY_CORTEX_M4_APPL_ADDR); 
    
        /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    
        for(;;)
        {
            /* Place your application code here. */
            Cy_GPIO_Inv(LED_1_0_PORT,LED_1_0_NUM);
            Cy_SysLib_Delay(1000);
        }
    }
    

    for 문 무한 루프 밖의 코드는 자동 생성된 것 그대로 OK.Cy_GPIO_Inv(LED_1_0_PORT,LED_1_0_NUM);는 LED_1 핀의 출력을 반전시킨다.Cy_GPIO_Write(LED_1_0_PORT,LED_1_0_NUM,1); 등으로 제어할 수 있다.Cy_SysLib_Delay(): 의 인수는 ms.

    M4 코드



    main_cm4.c
    #include "project.h"
    
    int main(void)
    {
        __enable_irq(); /* Enable global interrupts. */
    
        /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    
        for(;;)
        {
            /* Place your application code here. */
            Cy_GPIO_Inv(LED_2_PORT,LED_2_NUM);
            Cy_SysLib_Delay(500);
        }
    }
    

    M4측은 Cy_SysLib_Delay(500); 로 M0+측의 배속으로 치카치카 시키도록 한다.

    컴파일/프로그래밍



    Build->Build [Design 이름]에서 프로그램을 컴파일한다.

    무사 컴파일이 지나면, PC와 개발 보드를 접속해, Debug->Program으로 기입을 실시한다.

    위와 같은 화면이 나오므로, 어느 쪽인지의 코어를 선택해 OK/Connect로 기입이 행해진다.
    이번은 선택하는 것은 어느 쪽이든 OK. 디버거를 실행할 경우 어느 코어를 감시할지에 선택이 필요하다?

    쓰기가 성공하면 녹색과 빨간색 LED가 치카치카하기 시작했을 것이다.

    좋은 웹페이지 즐겨찾기