Test program for I2C several pin assignment
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.
main.cpp@0:da7659112ca0, 2016-05-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |