題名のとおり、PSoC を出してきてお勉強です。液晶に文字を出す練習です。使っているボードは PSoC4 PIONEER KIT という FLASH が 32K の
小規模マイコンです。今は PSoC 4 M-Series Pioneer Kit という flash が 128k のも出ているので機会があれば購入しておきたいところです。こっちのほうのキットは capsence pad が円形なのがいいです。
今日は、久しぶりに PSoC のプラミングの仕方を思い出すための勉強タイム。まず以下2つをクリアするべく作業開始
- 秋月 I2C 液晶に文字を出す
- USB-UART ブリッジの動作確認
部品を貼って
部品が使うピンをどのポートに出すかアサイン。コードはだるかったので main.c にベタ書き。液晶への文字出力と PC の TeraTerm に文字が出ることは確認出来ました。液晶の初期化は I2C接続小型キャラクタLCDモジュール(3.3V/5V)ピッチ変換キット 用です。
/* ========================================
*
* Copyright YOUR COMPANY, THE YEAR
* All Rights Reserved
* UNPUBLISHED, LICENSED SOFTWARE.
*
* CONFIDENTIAL AND PROPRIETARY INFORMATION
* WHICH IS THE PROPERTY OF your company.
*
* ========================================
*/
#include <project.h>
void i2cLcdSendCommand(unsigned char);
void i2cLcdSendData(unsigned char);
void i2cLcdSendStr(char *);
int main()
{
CyGlobalIntEnable; /* Enable global interrupts. */
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
I2C_Start();
CyDelay(100);
i2cLcdSendCommand(0x38);
RLED_Write(1);
CyDelay(20);
i2cLcdSendCommand(0x39);
CyDelay(20);
i2cLcdSendCommand(0x14);
CyDelay(20);
i2cLcdSendCommand(0x73);
CyDelay(20);
i2cLcdSendCommand(0x56);
CyDelay(20);
i2cLcdSendCommand(0x6c);
CyDelay(20);
i2cLcdSendCommand(0x38);
CyDelay(20);
i2cLcdSendCommand(0x01);
CyDelay(20);
i2cLcdSendCommand(0x0c);
CyDelay(20);
i2cLcdSendStr("Hello World");
UART_Start();
UART_UartPutString("Terminal out\n\r");
for(;;)
{
/* Place your application code here. */
BLED_Write(1);
CyDelay(1000);
BLED_Write(0);
CyDelay(1000);
}
}
void i2cLcdSendCommand(unsigned char command) {
unsigned char buf[2];
buf[0] = 0x00;
buf[1] = command;
I2C_I2CMasterClearStatus();
I2C_I2CMasterWriteBuf(0x3E, &buf[0], 2, I2C_I2C_MODE_COMPLETE_XFER);
while(I2C_I2CMasterStatus() != I2C_I2C_MSTAT_WR_CMPLT) {
;
}
//CyDelay(1);
}
void i2cLcdSendData(unsigned char ch) {
unsigned char buf[2];
buf[0] = 0x40;
buf[1] = ch;
I2C_I2CMasterClearStatus();
I2C_I2CMasterWriteBuf(0x3E, &buf[0], 2, I2C_I2C_MODE_COMPLETE_XFER);
while(I2C_I2CMasterStatus() != I2C_I2C_MSTAT_WR_CMPLT) {
;
}
//CyDelay(1);
;
}
void i2cLcdSendStr(char *str) {
while(*str) {
i2cLcdSendData(*str++);
}
}
/* [] END OF FILE */


