페이지

글목록

레이블이 PSOC인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PSOC인 게시물을 표시합니다. 모든 게시물 표시

2016년 11월 2일 수요일

[PSOC5] 5V 전원은 PSOC5에 데미지를 주는군요.

예전부터 PSOC5에 전원을 5V로 공급하면 MCU가 과열되어 사망하는 경우가 생겨서 도중에 3.3V로 변경해서 해결을 했었습니다.

메뉴얼에는 1.71V ~ 5.5V까지 동작한다고 해 놓고서 왜 5V만 넣으면 동작이 되기도 하지만 결국에는 열이나며 사망합니다.



최근에도 그 때, 뭔가 다른 것이 잘못됐을 테지.. 하고 5V를 다시 넣었다가 또 운명을 하셨네요. ㅜㅜ

PSOC4 는 5V를 넣어도 동작을 하는데, PSOC5는 죽습니다.


개발키트를 보면 5V에서 동작한다고 해 놓고, 좀 더 자세히 보면 다이오드를 꼭 1개 끼워 넣었더라고요.



웹써핑으로 찾아봐도 저와같은 내용은 없거나, 자세히 나오지도 않는 것 같습니다.

오늘은 그래서 위의 회로처럼 다이오드를 1개 추가하니 5V 보다 약4.6~4.7V (0.3~0.4V  전압 강하) 에서는 열이 안나고 안정적으로 동작을 하네요.

PSOC5 자체에서는 전력 소모가 크지 않으므로, 3.3V 레귤레이터를 사용하기 보다는 작은 다이오드 하나를 쓰면
가격적으로 저렴하고, 필요시 5V 구동 TTL IC와 연결했을 때, Hin 레벨을 맞추기 위해 전압 변환용 버퍼를 써야 할 일도 없어서 좋습니다.

원래는 5V에서 동작을 해야하는데 안되는 PSOC5를 욕해야 하는데, 꼭 장점처럼 말을 한 것 같네요.

하여간, PSOC5 는 제가 보기에 이런 문제점이 있었습니다.

5V 그냥 넣으면 꽥~~!!

2016년 10월 10일 월요일

[터치 키 IC] CY8CMBR31xx 소개(PSOC5 소스 포함)

안녕하세요. 계획에 없던 IC 소개 글을 쓰게 됐네요.

편집을 하다 보니 글이 꽤 깁니다. 값싸고 성능이 좋은 IC 라고 생각 되며, PSOC5 와 같이 테스트를 했습니다.
STM32 계열이나 다른 CPU와도 연결해서 써도 괜찮겠는데, 나중에 STM에 연결하게 되면 또 올리겠습니다.

편집하다 보니 시간이 너무 많이 들어가서 그림 위주로 올리겠습니다.

[참고한 자료 #1] - 링크

[참고한 자료 #2] - 링크






















이렇게 추가를 하면, host API 폴더에 있는 MBR31xx IC를 콘트롤 할 수 있는 함수들을 사용할 수 있는데, I2C 콤포넌트 이름이 틀리다고 에러가 날 것 입니다.

이 API 함수가 PSOC4와 연동해서  동작하도록 되어 있는데, PSOC5 와 이름만 틀리고 완전히 동일하게 쓰이니까, I2C 함수 이름만 맞게 바꿔 주면 에러가 없어집니다.

컴파일해서 프로그램을 넣으면, 동작이 안되네요.

디버그로 추적해서 보니까, 원인은 예제 프로젝트가 MBR3116 IC 로 되어있고,
제가 사용한 IC는 MBR3108 이어서 ID 비교 시에 오류가 나서 동작이 안됐습니다.

Host_API 폴더안의 CY8CMBR3xxx_Device.h 파일에서 다음과 같이 디바이스 이름을 수정해 주면 정상 동작합니다.


제가 첨부한 PSOC5 프로그램은 예제와는 약간 다릅니다.
인터럽트 방식을 사용하지 않았고, Proximity 센싱 대신에 버튼을 3개 센싱하는 프로그램 입니다.

LED 3개를 host에서 I2C로 제어 합니다. 

아쉬운 것이, Proximity Sense 와 Guard Sense 를 테스트 못해봤는데..
PSOC 과는 다르게 버튼을 공통으로 Proximity Sense 와 사용할 수 없었던 점을 미리 알지 못했네요. 
Proximity Sense 와 Guard Sense 는 핀이 정해져 있는 것이 좀 다르네요.

또 한가지 아쉬운 점은, 16원짜리 PWM회로 없는 부저를 1개 달았으면 터치키가 눌릴 때 마다 소리가 나서 눌렸다는 정보를 전달해 줄 수 있었는데, 뭐 하는 기능인지 최초 설계시에 잘 몰랐습니다. ㅜㅜ


이 칩을 사용하기 전에 PSOC5 나 PSOC4 에서 CAPSENSE 기능을 사용해 봤었는데,
PSOC에서 CAPSENSE 기능을 사용시에는 너무 반응속도가 늦었습니다. 버튼이 많아질 수록 반응 속도가 더 늦어 져서 거의 사용하기 싫을 정도(?) 였었는데.. 이유는 CAPSENSE 읽는 함수를 여러 번 실행해야 응답이 1번 오는데, 버튼이 더 많아질 수록 더 많이 CAPSENSE 읽는 함수를 실행해야 해서 그렇게 느려졌습니다.

제가 혹시 잘 못 사용하는 것은 아닌지, PSOC에서 CAPSENSE 읽는 속도를 개선하는 방법을 알고 계시는 분이 계시면 좀 알려 주십시요.

결론은, 이 칩(MBR31xxx)를 사용하면 그냥 I2C로 일반 택트 스위치 읽듯이 주기적으로 값을 읽으면 됩니다. 그리고 읽은 정보를 보고 LED 상태를 바꾸고 싶으면 I2C로 LED 상태 변경 명령을 보내면 됩니다. 속도도 전혀 느려지지 않습니다.

정말로, 앞으로 터치 센서를 사용할 경우에는 이 칩만 쓰고 싶습니다. ^^

아~~, 또 한가지 .. PSOC4,5 에서 CAPSENSE 를 연결할 경우 PSOC과 CAPSENSE PCB PAD 와는 거리가 짧아야 하고 센싱 입력 ADC 선을 메쉬 쉴드와 쿠퍼로 감싸줘야 합니다.
그래서 CPU 와 터치 센서와의 위치에 대해서 엄청난 고민을 해서 아트웍과 위치 선정에 어려움이 많았고, 거리도 멀게 배치할 수도 없었는데 이 칩(MBR31xx)가 모든 고민을 해결해 줬습니다.

거리가 멀어도 됩니다. I2C 통신 거리가 보통 1m 정도는 나오니까, PCB 어디에도 터치를 연결할 수 있겠습니다.

또 한가지 장점이 있네요. PSOC에서 CAPSENSE를 사용하려면 IDAC 가 1개 들어갑니다. 만약에 DAC를 사용해야 할 때, CAPSENSE 때문에 DAC가 부족하면 PSOC 중에서 DAC가 1개 더 많은 종류를 선택해야 하는데, 이 경우에 MBR31xx 보다 가격이 더 올라갑니다.
이런 경우 당해 보셨나요? 저는 당해 봤습니다. ^^

아.. 이번에도 참 좋은 IC를 알게 되고 사용해 봤습니다. 앞으로도 많이 사용하게 될 것 같습니다. 이 칩 간만에 본 명품입니다. ^^

가격은, 단돈 $0.76 @ 1k.







[테스트 동영상]


2016년 8월 26일 금요일

[PSOC] PSOC4 UART 부트로더가 내장된 키트 소개(049)

이번에 PSOC4 보드(C8CKIT-049)를 여러 개 샀습니다.



저렴해서 ($4) 여러개 구입했는데, 비슷하게 생긴 보드(C8CKIT-043) 와 다른 점은 JTAG 가 포함되지 않은 점입니다.
또한 USB-to-I2C 도 포함되어 있지 않네요. I2C는 CAPSENSOR 튜닝할 때 필수인데... 없군요.


따라서 프로그램할 수 있는 방법이 없기 때문에, UART 부트로더가 내장되어 있습니다.
전원을 넣을 때, Switch 를 누른 상태로 전원을 넣으면 부드로더 모드가 되서 PSOC Creator 에서 UART로 프로그램을 다운로드할 수 있습니다.

자세한 내용은 다음에 좀 더 시간이 나면 올리겠고,,,
CY8CKIT-049 보드에 대해서 평가를 하자면, UART 부트로더를 테스트할 수 있어서 좋았지만
몇천원 더 주고 043 보드를 사는 것이 훨씬 낫다. 입니다.

JTAG와 USB-I2C 가 없어서 아주 많은 기능을 못 쓰게 되니 1개 사실 때는 043 보드가 좋고,
여러개 사실 때는 043 보드 1개에 049 보드 여러개 사시던가, 디버거가 있으시면 049 보드만 사도 괜 찮겠습니다.

2016년 6월 28일 화요일

[PSOC] PSOC5 'DAC+내부 OPAMP' 로 25mA POWER 만들기

안녕하세요,

이번에는 PSOC5 로 POWER 출력을 만드는 방법을 소개 합니다.
최근에는 BLE 나 센서들이 저전력 구조로 설계되어 있으니 수십 mA 또는 10mA 이내의 전류면 충분히 동작 가능합니다.

PSOC5 키트인 CY8CKIT-059 에서 이 테스트를 진행했습니다.
059 키트는 5V 전원을 사용하고 , 여기에 I2C 방식인 조도 센서 ISL29023 을 3.3V 전원으로 DAC+OPAMP 출력을 연결했습니다.

따라서, 전원은 5V 하나만 있고 센서용 전원으로 따로 3.3V 레귤레이터를 필요로 하지 않습니다.

메뉴얼을 보니, PSOC5 의 OPAMP의 Fllower 모드의 High Power 옵션에서 전류는 최대 25mA 까지 출력 될 수 있다고 나와 있습니다.


DAC+AMP POWER 회로 연결은 다음과 같습니다.



테스트용 PSOC 059 KIT의 전체 회로도는 다음과 같습니다.

PSOC Creator의 Resource Meter를 통해 확인해 보니 PSOC5의 DAC 출력은 4개, OPAMP 출력도 4개가 있네요.

예전에 조도센서를 I2C로 테스트한 내용은 동일하고, 여기에 DAC+AMP 로 파워를 만들어 넣었습니다.
DAC 만으로 가능하지 않을까 해서 먼저 테스트 해 보니, 전류가 모자라서 안돼서
AMP를 연결하니 제대로 동작하는 것을 확인해 봤습니다.

다음에 시간이 나면 BLE도 이런 방식으로 전원을 연결해 보겠습니다.

자세한 내용은 소스를 첨부하니 참고해 주시기 바랍니다. (링크)

2016년 6월 9일 목요일

[PSOC] PSOC5 조도센서 I2C I/F 테스트

조도센서 ISL29023 (Intersil 사)를 테스트 해 봤습니다.

이 센서는 간략히 말하면, I2C I/F 방식으로 ALS(조도) 와 IR(적외선)을 continuous/once 로 측정할 수 있습니다.

일단 테스트로 ALS 를 continuous 로 측정해서, PSOC5 의 USB_UART 로 출력하도록 했습니다.

PSOC5 의 연결은 다음과 같습니다. (I2C, USB)



command 레지스터는 전원 ON시, 모두 0 으로 되므로 읽어도 아무 값도 안나옵니다. 파워 다운 모드로 되어 있어서 그런 것 같네요.

그래서 command-I 레지스터에 조도센서를 continuous 하게 샘플링하도록 설정했습니다.


USB-to-UART 로 출력하도록 해 놓고, 터미널로 본 내용은 다음과 같습니다.
밝은 상태에서 손을 데면 어두워지면서 값이 낮은 값으로 변합니다.



소스코드 링크 : psoc5_code

2016년 6월 3일 금요일

[PSOC] PSOC4 SPI 핀 <-> GPIO 핀

SPI 기능으로 설정된 핀을 잠시 GPIO 기능의 핀으로 바꿨다가 다시 SPI로 되돌리는 테스트를 했습니다.

이런 경우는 보통 드문데, 핀이 모자라서 하게 되었습니다.

SPI TopDesign 탭의 내용은 다음과 같습니다.




SPI -> GPIO 동작 방법은 다음과 같습니다.
1. SPI component STOP.
2. SPI 핀 모드를 GPIO 출력인 경우 Strong Drive 로 설정
3. SPI핀 기능을 GPIO 핀으로 변경
4. GPIO 기능 처럼 핀을 프로그램에서 사용.
    SPIFLASH_Stop();
    SPIFLASH_miso_m_SetDriveMode(SPIFLASH_miso_m_DM_STRONG);
    
    SPIFLASH_SET_HSIOM_SEL(*(reg32 *)SPIFLASH_miso_m__0__HSIOM, SPIFLASH_miso_m__0__HSIOM_MASK,
                                   SPIFLASH_miso_m__0__HSIOM_SHIFT, SPIFLASH_HSIOM_GPIO_SEL);

        SPIFLASH_miso_m_Write(1); CyDelayUs(1);
        SPIFLASH_miso_m_Write(0); CyDelayUs(1);
        SPIFLASH_miso_m_Write(1); CyDelayUs(1);

GPIO -> SPI 동작 방법은 다음과 같습니다.
1. SPI핀 기능을 GPIO 핀으로 변경
2. SPI component START.
    SPIFLASH_SET_HSIOM_SEL(*(reg32 *)SPIFLASH_miso_m__0__HSIOM, SPIFLASH_miso_m__0__HSIOM_MASK,
                                   SPIFLASH_miso_m__0__HSIOM_SHIFT, SPIFLASH_HSIOM_SPI_SEL);
    SPIFLASH_Start();

2016년 5월 27일 금요일

[PSOC] PSOC4 AUDIO IC(ISD21xxx) 동작 테스트

예전에 올려 보려고 한 AUDIO 출력 IC 입니다.

PSOC4로 제어해 봤는데, 다른 CPU로도 간단하게 제어 가능한 IC 입니다.

예전에 AUDIO IC에 대해 아무런 지식이 없어서, wave 파일을 raw 데이터로 SPI로 샘플링 주파수를 설정하고 
밀어 넣으면 동작할 것이라 생각하고 wave 파일 구조를 공부해서 정리했었는데 그렇게 제어하는 것이 아니였습니다. ㅜㅜ

괜한 3일을 날려 버렸던 놈인데, 아주 간단히 제어하는 놈이었습니다.

메뉴얼을 제가 이해를 잘 못 한 것도 있지만, 많이 부실하기도 했고요.

ISD2130 AUDIO IC는 SPI로 데이터를 실시간으로 전송하면서 제어할 수 없는 IC라고 합니다.(저는 메뉴얼에서 가능하다고 읽었고 sale 하는 분이 안된다고 해서 더 이상 진행은 않했습니다)

사용 방법은 다음과 같습니다.
1. 내부에 메모리가 있어서 먼저 SPI 통신으로 AUDIO 데이터를 내부 메모리에 USB 전송 툴로 Write 한다고 합니다.
2. USB 전송툴과 윈도우 프로그램에 의해 각각의 AUDIO 소스마다 VP(Voice Prompt 라고 하네요) INDEX를 부여해 줍니다.
3. ISD2130 IC에 SPI 통신으로 PU(Power Up) -> CFG0 REG(Sampling 주파수 설정) 설정 -> CFG_REG2(Compression Souce) 설정 -> VOLC(Volume Control) -> PLAY VP(Voice Prompt #) -> PD(Power Down) 의 과정으로 스피커로 음원이 출력됩니다.

여기서 한가지 주의할 점은 VOLC 명령은 동작하지 않는다는 점 입니다.
아무리 해도 안되서 연락해서 알아본 결과, WR_CFG_REG 명령을 통해서 우회적으로 VOLC 레지스터를 Write 해야 볼륨을 변경할 수 있습니다.

또, 한가지 주의할 점은 VOLC 레지스터의 값은 0x00 이 최대 볼륨이고 0xFF가 가장 작은 볼륨이랍니다.
이것도 전화 연락해서 알 수 있었습니다.

많이 헤메면서 시간이 좀 걸렸지만, ISD2130 은 꽤 쓸만했습니다. 가격이 600원대에 8KHz 로 샘플링하면 꽤 긴 음성 파일 포함해서 저장된 데이터 38개를 Play할 수 있었으니 부저보다 훨씬 다양한 용도로 저렴하게 사용 가능했습니다.


하드웨어는 SPI로 연결하면 됩니다. 인터럽트 입력은 별로 필요 없고 STATUS READ 명령으로 BUSY를 체크하면 됩니다.


PSOC TopDesign.cysch 탭에서 SPI 콤포넌트를 1개 불러다 놓고, /CS 핀을 1개 불러 놓습니다.
다른 CPU에서도 SPI 통신 레지스터 설정 잘 하시고 함수 불러다 쓰시면 됩니다.
현재 프로젝트에서 SPI 통신 1개에 4가지가 연결되어 있어서, 대표적인 Device 이름을 따서 SPI 콤포넌트 이름을 SPIFLASH 로 했습니다. AUD_RDY 핀은 만들어만 놓고 사용하지 않았습니다.



다음은 PSOC4 를 사용할 때, SPI 설정 내용입니다.



버퍼 사이즈는 적당히 조정을 해 주세요. 저는 너무 많이 잡은 듯 합니다.


메인 함수에서 Audio 출력 함수를 사용하는 예는 다음과 같습니다.

main()
{
    SPIFLASH_SCBCLK_Start();
    SPIFLASH_Start();
    CyGlobalIntEnable; /* Enable global interrupts. */

    audio_play(0x21,0x1A);   // 0x21 VP 를 VOLC 0x1A 로 Play
    while(1);
}

다음은 PSOC4 에서의 audio_play 함수 정의 내용입니다.
void audio_play(uint8_t aud_index,uint8_t aud_vol)
{
    uint8_t tx_test_bf[10];
    char tx_buf[100];

    tx_test_bf[0] = 0x10;   // Power up
    SPI_Aud_Write_String(tx_test_bf,1);
    
    tx_test_bf[0] = 0x00;   // CFG_REG0 –Sample Rate Override
    tx_test_bf[1] = 0x60;
    SPI_Aud_Write_String(tx_test_bf,2);

    tx_test_bf[0] = 0xB8;   // Write Config Register
    tx_test_bf[1] = 0x03;   // VOLC : 11.3.4 VOLC –Volume Control
    tx_test_bf[2] = aud_vol;
    SPI_Aud_Write_String(tx_test_bf,3);
/*    
    tx_test_bf[0] = 0x03;   // VOLC : 11.3.4 VOLC –Volume Control
    tx_test_bf[1] = 0xFF;
    SPI_Aud_Write_String(tx_test_bf,2);
*/
    tx_test_bf[0] = 0x02;   // CFG_REG2 –Compression Source
    tx_test_bf[1] = 0x44;
    SPI_Aud_Write_String(tx_test_bf,2);
    
    tx_test_bf[0] = 0xA6;   // PLAY_VP
    tx_test_bf[1] = 0x00;
    tx_test_bf[2] = aud_index;         // M_단선bell_2_VP19 19
    SPI_Aud_Write_String(tx_test_bf,3);
    
    tx_test_bf[0] = 0x12;   // Power Down
    SPI_Aud_Write_String(tx_test_bf,1);
    
    while( (SPI_Aud_Read(0x40) & 0x40) == 0);
    sprintf(tx_buf,"Index : [%02X]\n\r",aud_index);
    UART_1_UartPutString(tx_buf);
}


다은은 Audio IC SPI Write 함수 입니다.
void SPI_Aud_Write_String(uint8_t *write_buf,uint8_t cnt_buf)
{
    uint8_t i,dummy;
    AUD_CS_Write(0);
    CyDelay(10);
    for (i=0;i
    {
        SPIFLASH_SpiUartWriteTxData((uint32)write_buf[i]);     // dummy
        while(SPIFLASH_SpiIsBusBusy());
        dummy = (uint8_t)SPIFLASH_SpiUartReadRxData();
    }
    CyDelay(10);
    AUD_CS_Write(1);
}


다음은 Audio SPI Read 함수 입니다.
uint8_t SPI_Aud_Read(uint8_t REG_cmd)
{
    uint8_t rtn_data[10];
    char tx_buf[100];
    AUD_CS_Write(0);
    SPIFLASH_SpiUartWriteTxData((uint32)REG_cmd);     // instruction
    while(SPIFLASH_SpiIsBusBusy());
    SPIFLASH_SpiUartWriteTxData((uint32)0x00);     // dummy
    while(SPIFLASH_SpiIsBusBusy());
    AUD_CS_Write(1);
    rtn_data[0] = (uint8_t)SPIFLASH_SpiUartReadRxData();
    rtn_data[1] = (uint8_t)SPIFLASH_SpiUartReadRxData();
    
    return rtn_data[1];
}

[PSOC] PSOC4 CAPSENSOR Tunning

안녕하세요,

이번에는 PSOC의 대표적인 기능인 CAPSENSOR 에 대해서 알아보겠습니다.
제가 해 본 기능으로는 CAPSENSOR 터치 스위치와 약 10센치 정도 거리의 사람을 인식할 수 있는 Proximity 기능입니다.

CAPSENSE 는 말 그대로 콘덴서의 성격을 많이 띠는 것 같습니다.
그리고 아날로그 입력의 특성을 갖고 있습니다. 아날로그 입력을 갖고 있고 작은 신호를 증폭해서 인식을 하기 때문에 
매우 민감합니다.
그래서 튜닝을 잘 해야 제대로 성능이 나오는 것 같습니다.

저는 PSOC을 쓰면서 거의 CAPSENSE 기능을 사용하지 않았는데, 외주 개발을 하다 보니 
터치 스위치 기능을 많이 요구해서 어쩔 수 없이 사용해 보게 되었습니다. 
CAPSENSE 기능은 PSOC에서 처음 사용해 보았고, PSOC5,PSOC4 에서 동작시켜 보았습니다.

CAPSENSOR 사용법은 너무 방대하고(메뉴얼 내용이 정말 많음) 다양해서 여기서 자세한 설명은 못 하겠습니다.
그래서 동작 방법과 튜닝 방법만 우선 설명 드리겠습니다.

1. CAPSENSOR 만드는 방법.
먼저 CAPSENSOR PCB 패드를 기판에 위치시켜야 하는데, 제가 해 본 바로는 동그랗고 적당히 큰(지름 5~10mm 정도) 것이 좋습니다. 간격도 가능한 서로 많이 떨어져 있는 것이 좋습니다. 
너무 작거나 서로 간격이 좁으면 인식이 잘 안되거나 옆의 키를 눌렀는데 키가 눌러진 것으로 인식될 때가 있습니다.


위 그림에서 Guard Sensor 라는 것이 있는데, 이것은 물이 묻어도 정상 동작을 하게 하기 위한 보조 기능입니다.
방수 기능이라고 설명이 되어 있는데, 표현이 좀 이상하네요. ^^

여기까지 HW 설명이였고요, 자세한 내용은 메뉴얼을 찾아 보시면 좋겠습니다. 자료가 너무나 많습니다.

SW 에서는 topDedign.cysch 탭에서 CapSense CSD 콤포넌트를 끌어다 놓습니다.


우측에 EZI2C는 나중에 CAPSENSOR 튜닝할 때에 디버거와 I2C 통신으로 연결하기 위해 필요한 콤포넌트 입니다.
위의 테스트는 프로그램은, 예제 프로젝트 중에서 가져다가 좀 수정한 것이고 소스는 정말 간단합니다.
실제로 동작하는 코드와 튜닝하는 코드가 다르므로, 
튜닝할 때는 프로젝트를 따로 1개 만들어서 CAPSENSOR의 포트만 맞게 설정하여 테스트하시기 바랍니다.

이 글을 시작은 했는데, 짧게 끝날 내용이 아니네요. ㅜㅜ

일단 튜닝 쪽만 다뤄야겠습니다.

다음은 CAPSENSE 콤포넌트의 설정입니다.
General tab 은 다음과 같습니다. default 로 표시한 부분이 CAPSENSOR 콤포넌트의 기본 세팅인데 튜닝 시 설정은 조금 다르네요.


그 다음으로 Widget tab 으로 가면, 좌측 상단의 + 버튼을 눌러서 여러 종류의 터치스위치를 추가, 제거(선택해서 Delete 키) 할 수 있습니다.

각각의 터치 스위치를 선택하면 CAPSESE 의 감도와 인식 Threshold 값 및 노이즈 처리값 등등을 바꿀 수 있습니다.
Scan resolution 을 높이면 감도가 높아져서 좀 더 정밀하게 값을 세팅할 수 있고, 보통 터치센서와 사람의 손가락 사이에 플라스틱 같은 소재로 거리를 띄워서 사용하는데, 감도를 높여야 어느정도 거리에서 손가락을 댔을 때 인식을 합니다.

다음은 Scan order tab 인데, 이부분은 자세히 조사를 못해봤습니다. 나중에 보충하겠습니다. 
현재는 전체 스캔 시간 정도만 참고하고 있습니다.

다음은 Advanced Tab 입니다. 이 부분은 HW 설계와도 좀 관련이 있습니다.
shield 센싱 핀의 유무에 따라서 shield 를 Enable/Disable 할 수도 있고,
Shield Tank Cap 의 사용 유무에 따라 Shield Tank Capacitor 를 Enable/Disable 할 수 있습니다.
Guard sensor 는 water proof(방수) 기능을 추가할 경우 HW에서 패턴으로 터치 센서를 감싸도록 설계한 후에 사용하는 기능이고,
나머지 부분은 아직 제대로 파악을 못했습니다. 나중에 자세한 내용 추가하겠습니다.

다음은, Tunning Helper Tab 입니다.
여기서 Enable tune helper 를 체크해야 튜닝 기능을 사용할 수 있습니다.
컴퓨터에서 튜닝 앱을 실행시켜서 PSOC IC 와 연동해서 동작시켜야 하는데, I2C 통신을 사용합니다.
따라서 EZI2C 콤포넌트를 추가해서 EZI2C 콤포넌트 이름을 Instance name for the SCB component 에 넣어 줘야 합니다.

이렇게 전부 설정했으면, EZI2C 콤포넌트의 설정을 또한 살펴봅시다.
configuration tab은 EZI2C 를 선택하면 되고,

EZI2C Basic TAB 에서 기억할 것은 Primary slave address(7-bit) 에 해당하는 주소하고,
Sub-address Size(bit) 는 16 bit 로 설정하는 것으로.. EZI2C 설정은 이 2가지 외에는 신경 쓰실 필요는 없습니다.

이렇게 설정을 하면 모두 끝난 것입니다.

튜닝용 소스코드는 모두 똑같습니다.
main.c 에 있는 main() 함수 내용 몇 주만 추가하면 됩니다.

int main()
{
    /* Enable global interrupts */
    CyGlobalIntEnable;
    
    /* Initialize CapSense CSD and EzI2C Start the sensor scanning loop */
    CapSense_CSD_TunerStart();
    
    while(1u)
    {
        /* Process scanning results and communicates with Tuner GUI */
        CapSense_CSD_TunerComm();
    }
}

컴파일해서 프로그램을 다운로드하고,
디버거의 I2C 신호(SCL,SDA)를 PSOC4 의 핀에 맞게 연결을 합니다.



PSOC Creator 의 TopDesign.cysch 탭에서 CAPSENSE 컴포넌트를 선택하고 마우스로 우클릭 해서 Launcher Tunner 를 실행하면 튜닝 앱이 실행됩니다.


튜닝 앱 실행.


여기서 끝이 아니죠. 설정에서 I2C 어드레스 및 관련 설정을 맞춰야 합니다.
이전에 CAPSENSE 의 EZI2C 의 주소(0x08)와 Subaddress 길이를 서로 맞춰 주고 튜닝 툴의 좌즉 상단의 Start 버튼을 눌러주면 실시간으로 값을 바꿔보면서 튜닝을 진행하실 수 있습니다.


튜닝은 많이 해보면서 적당한 값들을 찾아가면 됩니다.
나중에 튜닝했던 데이터를 본 프로그램에 적용하면 큰 문제없이 동작할 겁니다.

[소스코드 링크]