BCM920737TAG NVRAM data lost after usb plug out

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi,

I have a problem with programming NVRAM on BCM920737TAG. I have tried every solution taht is available on this forum, but none solved my problem.

Here is the problem:

After i program board board (SW4 set to 1,2,3,4 are ON, 5,6,7,8 are OFF) with SDK NVRAM works ok. It remembers state correctly. Without pluging out USB i can set SW4 to all 8 switches to OFF and reset board and NVRAM sill work correctly – it remembers state when i reset board.

The problem starts when i plug out USB and plug in it again – NVRAM remember last state that was written before pluging out USB .

Could you help me to make NVRAM remember written data despite plugging out usb after programming device?

My Configuration:

My BCM920737TAG board is configured to use SFLASH (resistors are configured configured  and BCM920737TAG_Q32.mk  has set  PLATFORM_NV ?= SFLASH). Board has Vout set to 3.3V. SW2 set to VUSB, SW3 set to VREG.

GPIO is configured as:

#define GPIO_PIN_WP               1

#define GPIO_SETTINGS_WP          (GPIO_OUTPUT | GPIO_INIT_LOW  | GPIO_WP)

const BLE_PROFILE_GPIO_CFG wiced_sense_gpio_cfg =

{

/*.gpio_pin =*/

{

GPIO_PIN_WP,     

-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1     },

/*.gpio_flag =*/

{

GPIO_SETTINGS_WP,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

}

};

And bleprofile_WriteNVRAM(); bleprofile_Read NVRAM(); are used after bleprofile_GPIOInit(bleprofile_gpio_p_cfg); I even use bleprofile_WPEnable(0);.

Wiadomość była edytowana przez: Łukasz Tymczyna

0 Likes
1 Solution
Anonymous
Not applicable

Hello Lukasz,

We cannot reproduce this issue, sorry.

Thanks,

JT

View solution in original post

0 Likes
8 Replies
Anonymous
Not applicable

Can you check your logic level voltages between the BCM and your NVRAM?  I have found that the BCM logic levels can change when the USB voltage is removed from UART RX.  I found in my setup that the logic levels were fine between my BCM and my external ADC... until I removed the USB and tried to run on battery and voltage regulator.  Then the logic level high was too low. (dropped by .2 volts when I disconnect UART_RX from USB).

0 Likes
Anonymous
Not applicable

Please correct my if I am wrong. My BCM is configured to use SFLASH, so NVRAM should be located in SFLASH. I have measured VCC and WP on MX25U4035MI-25G and they are always both 3.31 V (board is configured to 3,3, so it is good value).

0 Likes
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

All the variations of SW4 are not tested or documented anywhere, so let's back up and verify that a simpler configuration works.

Using the WICED Smart Quick Start Guide (SDK 2.x and TAG3 Board) as a reference:

1.

To program the TAG3 board with your PC connected via USB cable while using the NVRAM/EEPROM on the board (default configuration), you need the following configuration:

  • Each of the eight DIP switches on the mini-switch SW4 set to ON.
  • SW2 should be in the VUSB position (up) and SW3 should be in the VREG position (down)

This should work and no errors should be returned within the SDK during the process of programming the board.

2.

Now proceed to remove the USB cable, and run the unit off the CR2032 battery (make sure the voltage of the battery is correct and that it does not need to be replaced - see the other posts in this discussion as they demonstrate what happens when this occurs).

  • Disconnect the tag from the PC USB interface
  • Set the position of both switches (SW2/SW3) on the right side of the board to the VCOIN position
    • The switches should now be set to the opposite positions of that used for programming.
  • Install a CR2032 coin cell in the battery holder on the bottom of the tag and ensure that the battery polarity is correct.

The board should now be powered by the battery and your application running.

At this point, are you seeing the same state information being lost?

It's my understanding that in order to now use the external SFLASH vs EEPROM, there are some Resistor Settings you need to make that are defined in Table 2 of the Hardware User Guide (SDK 2.x and TAG3 Board)

Along with some undocumented changes to the Make File Settings and SW4 that are described here: Re: Change BCW920737TAG from EEPROM to SFLASH failed

Based on your settings described above, it sounds like you may already be using this thread for configuration.

This is a tricky item to get working on the TAG3 board, but I believe others have done so: zhaohua ewarrior yusun@broadcom.com dmiya janusw

0 Likes
Anonymous
Not applicable

There is no difference when i change switches to power board from battery. NVRAM remember last state from session when i programmed device and haven't pluged out usb.

0 Likes

I will try to ask around internally and see if I can find someone with experience running the board off the serial flash.

0 Likes
Anonymous
Not applicable

Hello Lukasz,

We cannot reproduce this issue, sorry.

Thanks,

JT

0 Likes
ZhaohuaS_76
Employee
Employee
25 sign-ins 10 questions asked 10 sign-ins

My suggestion:

1. check the power swicth SW2 and SW3 whether is correct?

2. check the return value of bleprofile_WriteNVRAM whether is OK?

0 Likes