TextLCD test code for US2066 using I2C interface on W7500 platform
Fork of Serial_HelloWorld_WIZwiki-W7500 by
main.cpp@4:bb94badd9ebe, 2017-05-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |