I have a project where an nRF51822 (BLE Nano v1.5) is an I2C master and communicates with an Atmega328. I have communication working over I2C just fine using various pins. However, when attempting to use pin P0_10, the pin specified by the manufacturer, as the standard I2C SDA pin, it doesn't work.

I have tried on multiple BLE Nano boards and also on a BLE400 development board to no avail. As previously stated I can use other pins for my I2C bus and it will work with no issues.

I am using mbed OS with these boards. When using Arduino IDE then I2C works fine, however the entire project is written in mbed and porting to Arduino isn't an option. The mbed pin mapping for this board also specifies P0_10 as the default SDA pin.

This is a huge issue for me as I have a big batch of custom PCBs on order that use the standard I2C pins. If this issue can't be fixed in software then it means having to manually fix each individual board.

I'm really struggling with this one so any suggestions are very welcomed!

  • \$\begingroup\$ as the standard I2C SDA pin, it doesn't work. How do you know this? Have you probed it with the oscope? Do you know what device is transmitting the I2C and if you do know the device, have you looked that spec sheet? \$\endgroup\$ – user103380 Nov 16 '18 at 17:25
  • 2
    \$\begingroup\$ same question on SO stackoverflow.com/questions/53342181/ble-nano-i2c-sda-on-p0-10 \$\endgroup\$ – Juraj Nov 16 '18 at 18:07
  • \$\begingroup\$ If this were my project a prime suspect would be that the MBED stack may already be attempting to use the pin either for I2C or for some conflicting purpose. That's a pile of code that just loves to hide non-intuitive choices deep in the inner layers, so I'd be building entirely from source and attacking it with recursive grep and perhaps reading out and printing the applicable peripheral configuration registers at runtime. Spend some time with the data sheet or programmers manual figuring out which I2C engine is available on this pin and what other roles the pin might have. \$\endgroup\$ – Chris Stratton Nov 16 '18 at 20:51
  • \$\begingroup\$ @KingDuken I've scoped the I2C bus and can verify that the pin is just floating. The device I am having an issue with is the I2C master, so it is the device with the issue. I have no issues if I use other pins, just as soon as I try to use P0_10... \$\endgroup\$ – amitchone Nov 19 '18 at 10:13
  • \$\begingroup\$ @ChrisStratton So that was my initial thought; I created a simple sketch that literally just uses I2C and spits out some data to no avail - no UART or SPI being used. Going to have to attack it from a lower level at some point, but with tight deadlines it looks like boards will have to be altered! \$\endgroup\$ – amitchone Nov 19 '18 at 12:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.