題名のとおり、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 */