TextLCD test code for US2066 using I2C interface on W7500 platform

Dependencies:   TextLCD mbed

Fork of Serial_HelloWorld_WIZwiki-W7500 by WIZnet

Committer:
wim
Date:
Wed May 10 18:22:27 2017 +0000
Revision:
4:bb94badd9ebe
Parent:
2:033eefd2904e
TextLCD test code for US2066 using I2C interface on W7500 platform

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedAustin 2:033eefd2904e 1 /* mbed Example Program
mbedAustin 2:033eefd2904e 2 * Copyright (c) 2006-2014 ARM Limited
mbedAustin 2:033eefd2904e 3 *
mbedAustin 2:033eefd2904e 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbedAustin 2:033eefd2904e 5 * you may not use this file except in compliance with the License.
mbedAustin 2:033eefd2904e 6 * You may obtain a copy of the License at
mbedAustin 2:033eefd2904e 7 *
mbedAustin 2:033eefd2904e 8 * http://www.apache.org/licenses/LICENSE-2.0
mbedAustin 2:033eefd2904e 9 *
mbedAustin 2:033eefd2904e 10 * Unless required by applicable law or agreed to in writing, software
mbedAustin 2:033eefd2904e 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbedAustin 2:033eefd2904e 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbedAustin 2:033eefd2904e 13 * See the License for the specific language governing permissions and
mbedAustin 2:033eefd2904e 14 * limitations under the License.
mbedAustin 2:033eefd2904e 15 */
mbed_official 0:879aa9d0247b 16 #include "mbed.h"
wim 4:bb94badd9ebe 17 #include "TextLCD.h"
mbed_official 0:879aa9d0247b 18
mbed_official 0:879aa9d0247b 19 Serial pc(USBTX, USBRX); // tx, rx
wim 4:bb94badd9ebe 20
wim 4:bb94badd9ebe 21 DigitalOut red(LED_RED); // PC_8
wim 4:bb94badd9ebe 22 DigitalOut green(LED_GREEN); // PC_9
wim 4:bb94badd9ebe 23 DigitalOut blue(LED_BLUE); // PC_5
wim 4:bb94badd9ebe 24
wim 4:bb94badd9ebe 25
wim 4:bb94badd9ebe 26 I2C i2c_lcd(D14, D15); //SDA, SCL = PA_10, PA_9
wim 4:bb94badd9ebe 27 char cnt = 0;
wim 4:bb94badd9ebe 28
wim 4:bb94badd9ebe 29 //TextLCD_I2C_N lcd(&i2c_lcd, US2066_SA0, TextLCD::LCD20x4D, NC, TextLCD::US2066_3V3); // I2C bus, slaveaddress, LCDType=LCD20x4D, BL=NC, LCDTCtrl=US2066
wim 4:bb94badd9ebe 30 TextLCD_I2C_N lcd(&i2c_lcd, US2066_SA0, TextLCD::LCD20x2, NC, TextLCD::US2066_3V3); // I2C bus, slaveaddress, LCDType=LCD20x2, BL=NC, LCDTCtrl=US2066
wim 4:bb94badd9ebe 31
mbed_official 0:879aa9d0247b 32 int main() {
wim 4:bb94badd9ebe 33 pc.printf("\n\r");
wim 4:bb94badd9ebe 34 pc.printf("Hello World from W7500!\n\r");
wim 4:bb94badd9ebe 35 pc.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);
wim 4:bb94badd9ebe 36
wim 4:bb94badd9ebe 37 //Test to fix the SystemCoreClock
wim 4:bb94badd9ebe 38 #if(0)
wim 4:bb94badd9ebe 39 #ifdef SYSCLK_EXTERN_OSC
wim 4:bb94badd9ebe 40 pc.printf("SYSCLK_EXTERN_OSC = 1; EXTERN_XTAL = %d\n\r", EXTERN_XTAL);
wim 4:bb94badd9ebe 41 // CRG->PLL_IFSR = CRG_PLL_IFSR_OCLK;
wim 4:bb94badd9ebe 42 #else
wim 4:bb94badd9ebe 43 pc.printf("SYSCLK_EXTERN_OSC = 0; INTERN_XTAL = %d\n\r", INTERN_XTAL);
wim 4:bb94badd9ebe 44 // CRG->PLL_IFSR = CRG_PLL_IFSR_RCLK;
wim 4:bb94badd9ebe 45 #endif
wim 4:bb94badd9ebe 46 pc.printf("CRG->PLL_IFSR = 0x%0X\n\r", CRG->PLL_IFSR);
wim 4:bb94badd9ebe 47
wim 4:bb94badd9ebe 48 pc.printf("CRG->PLL_FCR = 0x%0X\n\r", CRG->PLL_FCR);
wim 4:bb94badd9ebe 49
wim 4:bb94badd9ebe 50 uint8_t M,N,OD;
wim 4:bb94badd9ebe 51
wim 4:bb94badd9ebe 52 OD = (1 << (CRG->PLL_FCR & 0x01)) * (1 << ((CRG->PLL_FCR & 0x02) >> 1));
wim 4:bb94badd9ebe 53 N = (CRG->PLL_FCR >> 8 ) & 0x3F;
wim 4:bb94badd9ebe 54 M = (CRG->PLL_FCR >> 16) & 0x3F;
wim 4:bb94badd9ebe 55 pc.printf("M = %d; N = %d; OD = %d\n\r", M, N, OD);
wim 4:bb94badd9ebe 56
wim 4:bb94badd9ebe 57 pc.printf("Adapt PLL\n\r");
wim 4:bb94badd9ebe 58 wait(1.0);
wim 4:bb94badd9ebe 59
wim 4:bb94badd9ebe 60 CRG->PLL_FCR = 0x060100;
wim 4:bb94badd9ebe 61 pc.printf("CRG->PLL_FCR = 0x%0X\n\r", CRG->PLL_FCR);
wim 4:bb94badd9ebe 62 SystemCoreClockUpdate();
wim 4:bb94badd9ebe 63 pc.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);
wim 4:bb94badd9ebe 64 #endif
wim 4:bb94badd9ebe 65
wim 4:bb94badd9ebe 66 red = 1;
wim 4:bb94badd9ebe 67 green = 1;
wim 4:bb94badd9ebe 68 blue = 1;
wim 4:bb94badd9ebe 69
wim 4:bb94badd9ebe 70 if (! i2c_lcd.write(US2066_SA0, &cnt, 1)) {
wim 4:bb94badd9ebe 71 // if (! i2c_lcd.write(0x40, &cnt, 1)) {
wim 4:bb94badd9ebe 72
wim 4:bb94badd9ebe 73 pc.printf("Found I2C Slave Device\n\r");
wim 4:bb94badd9ebe 74 }
wim 4:bb94badd9ebe 75 else {
wim 4:bb94badd9ebe 76 pc.printf("Ooops, cant find I2C Slave Device\n\r");
wim 4:bb94badd9ebe 77 }
wim 4:bb94badd9ebe 78
wim 4:bb94badd9ebe 79 lcd.setOrient(TextLCD::Bottom);
wim 4:bb94badd9ebe 80
wim 4:bb94badd9ebe 81 while(1) {
wim 4:bb94badd9ebe 82 red = !red;
wim 4:bb94badd9ebe 83 wait(0.5);
wim 4:bb94badd9ebe 84
wim 4:bb94badd9ebe 85 lcd.printf("Hi mbed! ");
wim 4:bb94badd9ebe 86 // i2c_lcd.write(0x40, &cnt, 1);
wim 4:bb94badd9ebe 87 // cnt++;
wim 4:bb94badd9ebe 88
wim 4:bb94badd9ebe 89 pc.putc('#');
wim 4:bb94badd9ebe 90 }
mbed_official 0:879aa9d0247b 91 }