This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF8001 Problems

Hi,

I am trying to get the NRF8001 rev. C chip working with a Tiva Lauchpad (TM4C123GXL) board. I modified the original Arduino SDK for use with Energia. I am using the nrfToolbox app for Windows Phone 8.1.

Problem 1: I got the UART example working with the launchpad. The problem is I can receive but not send data. When I try to send data from the Launchpad, I get a "ACI Evt Pipe Error: Pipe #:8 Pipe Error Code: 0x90" error. I noticed that when I delete the paired device from the phone, connect again, this problem does not occur and I can send data from the launchpad. In this case the serial window of Energia reads,

....
    Evt Connected 
    Evt Pipe Status
    Evt link connection interval changed
....

But when I disconnect and connect again (without deleting the paired device) then I don't get the "Evt link connection interval changed" line and once again I cannot send data from the launchpad.

Problem 2: I am trying to get the proximity example to work but I always get this error,

....
    Evt Device Started: Standby
    C5 :5, 10, B4, 0, 50, 0, 
    No Bond present in EEPROM.
    Advertising started : Waiting to be connected and bonded
    E3 :3, 84, 10, 85, 
    ACI Command 10
    Evt" Cmd respone: Status 85
....

However, if I disable security in nrfGo and replace the bond command with a connect command everything works. I am not really sure what the problem is ??!!

I have attached the nrfGo Studio xml's for both the UART and the Proximity program I use.

Proximity.xml UART.xml

UART Serial Monitor Data (Problem 1) -> Launchpad_Capture.txt

Please let me know if you need some more information. Your help will be appreciated.

Parents
  • I have found the solution to problem 2. So the old rev. C chip uses a slightly different BOND (0x10) command. For the rev. C the timeout limits are from 1 to 30 and for the rev. D the timeout limits are 1 to 180 seconds. The examples in the Arduino SDK are all for rev. D and all use a 180 second timeout value. Changing this value to 30 seconds made everything work.

  • For problem one: You attempt to send and you get a Pipe Error code 0x90. Looking this up in the documentation aka [Product Specification] (www.nordicsemi.com/.../nRF8001) we see that in the Appendix for ACI status codes

    0x90 ACI_STATUS_ERROR_PIPE_INVALID Pipe Error Event : Transmit failed, Invalid or unavailable Pipe number or unknown pipe type

    Clearly the pipe exists so this is not invalid so this may be a case of inadequate documentation.

    Would it be possible to get the SPI messages you are sending and receiving printed out on the UART, the Arduino code base this by using the lib_aci_init and setting the debug parameter to true.

    Can you use a different app, like BLE scanner to test this out ? You will need to subscribe to Notifications. You can also use our Master Control panel app on Android to test this.

Reply
  • For problem one: You attempt to send and you get a Pipe Error code 0x90. Looking this up in the documentation aka [Product Specification] (www.nordicsemi.com/.../nRF8001) we see that in the Appendix for ACI status codes

    0x90 ACI_STATUS_ERROR_PIPE_INVALID Pipe Error Event : Transmit failed, Invalid or unavailable Pipe number or unknown pipe type

    Clearly the pipe exists so this is not invalid so this may be a case of inadequate documentation.

    Would it be possible to get the SPI messages you are sending and receiving printed out on the UART, the Arduino code base this by using the lib_aci_init and setting the debug parameter to true.

    Can you use a different app, like BLE scanner to test this out ? You will need to subscribe to Notifications. You can also use our Master Control panel app on Android to test this.

Children
No Data
Related