Test program for I2C several pin assignment

Dependencies:   TextLCD mbed

I2C SDA and SCL pin assignments are very flexible on nRF51.
The nRF51822 has a capability to assign PIN every where using PSELSDA and PSELSCL registers.
mbed library can support this flexibility and you can define your own pins!!
I have NOT tested other functions, UART, SPI, PWM and others but I'm sure that we can use same manner in nRF51822 chip.
/media/uploads/kenjiArai/i2c_lcd.jpg

Committer:
kenjiArai
Date:
Mon May 02 01:14:34 2016 +0000
Revision:
0:da7659112ca0
Test program for I2C several pin assignment

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:da7659112ca0 1 /*
kenjiArai 0:da7659112ca0 2 * mbed Application program
kenjiArai 0:da7659112ca0 3 * ------- Test program for I2C pin assignment -----------------------------------------
kenjiArai 0:da7659112ca0 4 * Tested on Switch Science mbed TY51822r3
kenjiArai 0:da7659112ca0 5 * Tested LCD module AQM0802A-RN-GBW, Akizuki 8 characters X 2 lines
kenjiArai 0:da7659112ca0 6 * http://akizukidenshi.com/catalog/g/gP-06669/
kenjiArai 0:da7659112ca0 7 *
kenjiArai 0:da7659112ca0 8 * Copyright (c) 2016 Kenji Arai / JH1PJL
kenjiArai 0:da7659112ca0 9 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:da7659112ca0 10 * http://mbed.org/users/kenjiArai/
kenjiArai 0:da7659112ca0 11 * Created: May 2nd, 2016
kenjiArai 0:da7659112ca0 12 * Revised: May 2nd, 2016
kenjiArai 0:da7659112ca0 13 *
kenjiArai 0:da7659112ca0 14 */
kenjiArai 0:da7659112ca0 15
kenjiArai 0:da7659112ca0 16 #include "mbed.h"
kenjiArai 0:da7659112ca0 17 #include "TextLCD.h"
kenjiArai 0:da7659112ca0 18
kenjiArai 0:da7659112ca0 19 #define PIN_MODE 1 // 0 to 4
kenjiArai 0:da7659112ca0 20
kenjiArai 0:da7659112ca0 21 #if (PIN_MODE == 0)
kenjiArai 0:da7659112ca0 22 I2C i2c(I2C_SDA0, I2C_SCL0); // SDA, SCL
kenjiArai 0:da7659112ca0 23 #elif (PIN_MODE == 1)
kenjiArai 0:da7659112ca0 24 I2C i2c(P0_0, P0_1);
kenjiArai 0:da7659112ca0 25 #elif (PIN_MODE == 2)
kenjiArai 0:da7659112ca0 26 I2C i2c(P0_28, P0_29);
kenjiArai 0:da7659112ca0 27 #elif (PIN_MODE == 3)
kenjiArai 0:da7659112ca0 28 I2C i2c(P0_3, P0_2);
kenjiArai 0:da7659112ca0 29 #elif (PIN_MODE == 4)
kenjiArai 0:da7659112ca0 30 I2C i2c(P0_2, P0_3);
kenjiArai 0:da7659112ca0 31 #else
kenjiArai 0:da7659112ca0 32 I2C i2c(I2C_SDA0, I2C_SCL0);
kenjiArai 0:da7659112ca0 33 #endif
kenjiArai 0:da7659112ca0 34
kenjiArai 0:da7659112ca0 35 TextLCD_I2C_N lcd(&i2c, ST7036_SA2, TextLCD::LCD8x2, NC, TextLCD::ST7032_3V3);
kenjiArai 0:da7659112ca0 36
kenjiArai 0:da7659112ca0 37 int main() {
kenjiArai 0:da7659112ca0 38 lcd.setCursor(TextLCD::CurOff_BlkOff);
kenjiArai 0:da7659112ca0 39 lcd.locate(0, 0); // 1st line top
kenjiArai 0:da7659112ca0 40 // 12345678
kenjiArai 0:da7659112ca0 41 lcd.printf("TY51822r");
kenjiArai 0:da7659112ca0 42 lcd.locate(0, 1); // 2nd line top
kenjiArai 0:da7659112ca0 43 // 12345678
kenjiArai 0:da7659112ca0 44 lcd.puts("Test I2C");
kenjiArai 0:da7659112ca0 45 lcd.setContrast(0x14);
kenjiArai 0:da7659112ca0 46 wait(3.0);
kenjiArai 0:da7659112ca0 47 uint32_t n = 0;
kenjiArai 0:da7659112ca0 48 uint8_t num = PIN_MODE;
kenjiArai 0:da7659112ca0 49 while(1) {
kenjiArai 0:da7659112ca0 50 lcd.locate(n%8, 1); // 2nd line top
kenjiArai 0:da7659112ca0 51 lcd.printf("*.......");
kenjiArai 0:da7659112ca0 52 lcd.locate(0, 0); // 1st line top
kenjiArai 0:da7659112ca0 53 lcd.printf("%u: %5u", num, n++);
kenjiArai 0:da7659112ca0 54 wait(1.0);
kenjiArai 0:da7659112ca0 55 }
kenjiArai 0:da7659112ca0 56 }