Smart Bluetooth Forum Discussions
Hi all,
I am running into a sticky issue on the BCM20732S. I have a Characteristic that reads, writes and notifies. I am updating this Char from two places in my code. I command this value from my app/client, the BLE packet arrives at the BCM20732S, and it normally sets correctly. I also occasionally will sdet this same value (by updating the value in the database) from my serial handler. It appears that sometimes when I am writing into the database from the serial handler, this is stomping on the incoming value before I can see it. Apparently the BLE write value arrives, it is saved to the database, my serial handler gets called and overwrites it before I am informed that the value has arrived.
I don't see any way to prevent this from happening without resorting to one Char for commands and a second one for feedback. Has anyone seen this before? Any ideas?
Thanks in advance,
Aaron
Show LessWe are using BCM20736 for our product, and have to program EEPROM with our application. How do we do this at production stage?
My specific questions are :
1. I understand Avnet is setup for mass programming. What are the pieces we need to share with Avnet so that they can program EEPROM?
2. How is EEPROM programmed ? Can it be programmed as a separate, standalone IC before it is put on our boards? Or does it need to be connected to BCM20736 for it to be programmed by Avnet ?
Show LessOur project need an accurate 600Hz PWM output,599.9~600.1 is allowed.
But we tried several ways,and failed to get it.
1.
aclk_configure(512000, ACLK1, ACLK_FREQ_24_MHZ);
adjust pwm initail value to get 600Hz,
pwm_start(ID, PMU_CLK, toggle_value, 155); ~600.4
pwm_start(ID, PMU_CLK, toggle_value, 154); ~599.7
2.
aclk_configure(307200, ACLK1, ACLK_FREQ_24_MHZ);
adjust pwm initail value to get 600Hz,
pwm_start(ID, PMU_CLK, toggle_value, 0x200); ~600.9
pwm_start(ID, PMU_CLK, toggle_value, 0x1FF); ~599.8
3.
I tried to modify input clock of PWM slightly,but it seems the output frequency is not modified.
aclk_configure(307308, ACLK1, ACLK_FREQ_24_MHZ);
pwm_start(ID, PMU_CLK, toggle_value, 0x1FF); ~599.8
How can I get an accurate PWM output frequency?
Show LessIn the Consol Debug Viewer, there is a message, "Trace Decoding Error - Could not find line number 314", appear by app of "hello_sensor" example code.
Another app such as "automation_io_server" or "heart_rate_monitor" are all appear with this message.
It show out after function call, "..._create()", executed completely. Simply, It's no way to trace back or debug it.
So, at this moment, I don't know how to find the reason out.
Even create a new APP by 'WICED Smart Designer" appeared with the message.
Have you know:
What is its bad effect?
How could we tracking the reason? and,
How to solve it?
Thanks,
Best Regards,
Joy Sun
Show LessHello,
I am working with the BCM920736 board, and I want to enable OTA upgrade. For my application, the board will be embedded in a system with no USB access, so the only way to modify its code will be through bluetooth OTA upgrade. However, I cannot figure out how to activate it. I am following the guide included, but i am getting stuck on the "sign the SOTAFU Image" section. I cannot figure out how to do the step where I need to do:
C:\rsa\rel>WsRsaSign.exe rsa.pri ___.bin 3A19 1 1
I cannot find an rsa directory on my computer, so I cannot figure out how to run that exe. When i try to run it manually, I get an error.
Thank you,
--Jay Jackman
Show LessWe are using BC20736 for our product. We intend to load our application on an EEPROM. How do we program the EEPROM at production stage? I read through the instructions available at Programming the TAG2/TAG3 Board using command line tools, but that seems to be programming single EEPROM at a time.
Is there a "Mass" programming option supported by BCM?
Show LessI am currently adding the ability to update the BCM module's firmware via the puart from our main system micro to enable in field programming of firmware updates. This is based on the example project, "uart_firmware_upgrade". A question that arises is that of MAC address after the update.
I've seen other threads that indicate that the MAC address can't be set at runtime via an API call -- that it has to be added to the binary file via an external tool. The issue that I'm trying to determine how to address is that a single binary image will be sent to all devices in the field for the purpose of field firmware upgrade. It seems this will result in all upgraded devices having the same MAC address.
Is there a solution to this problem that doesn't require a unique file to be built for every device in the field?
Thank you,
David
Show LessBased on various parameters in my application, I would like to switch between timed and untimed DEEP SLEEP. I am always using an interrupt to wake up on, sometimes combined with a timer and other times without a timer. The first DEEP SLEEP after a POWER ON RESET, always results in a DEEP SLEEP without a timer. Afterwards, based on parameters set at connection, I attempt to use the DEEP SLEEP with a timer, but the CHIP never wakes up with the timer once I use it without the timer. If i always set the timer (make sure secs < SLEEP_MAX), then the CHIP will wakeup with the timer without issue over and over again. Can someone tell me what I should be doing different, after a DEEP SLEEP without a timer, that will allow the CHIP to wake up with the TIMER as expected?
-----snip-----
void
app_enter_deep_sleep_with_timer(int secs)
{
ble_trace0("+Entering deep sleep");
devLpmConfig.disconnectedLowPowerMode = DEV_LPM_DISC_LOW_POWER_MODES_HID_OFF;
miaDriverConfig.delayAfterEnteringHidOffInUs= 30000000; // 700000;
devLpmConfig.wakeFromHidoffRefClk = HID_OFF_TIMED_WAKE_CLK_SRC_128KHZ;
if (secs < SLEEP_MAX){
devLpmConfig.wakeFromHidoffInMs = secs * 1000;
ble_trace1("LPM timer secs %d", secs);
} else {
devLpmConfig.wakeFromHidoffInMs = 0;
}
gpio_inputDisableAll();
gpio_configurePin(GPIO_PIN_P0 / 16, GPIO_PIN_P0 % 16, GPIO_INPUT_ENABLE | GPIO_PULL_UP, 0);
mia_enableLhlInterrupt(1);
gpio_configurePin(GPIO_CAP_BUTTON / 16, GPIO_CAP_BUTTON % 16, GPIO_INPUT_ENABLE | GPIO_EN_INT_BOTH_EDGE, 0);
devlpm_enableWakeFrom(DEV_LPM_WAKE_SOURCE_GPIO);
bleprofile_PrepareHidOff(); // Puts device into Deep Sleep ~1.33uA
}
-----snip-----
Show LessWe developed a board with BCM20736S chip configured as a peripheral device. When the central device, an Android Smartphone, tries to connect to our device, sometimes it returns a GATT ERROR, in particular the error 133 that is a generic error.
This happens in random manner on different smartphones. In particular with a Samsung Galaxy Core with Android 5.1 we measure a 10% of cases.
We want to know how to solve this problem considering we configured the BCM with 200 ms of advertising period and we set the maximum Tx Power.
Show LessI am working with a new PCB design using the BCM20736S. I am trying to verify that BLE communications are working between the board and a Windows 8.1 PC. I am using the 2.2.1 SDK's unmodified Heart Rate Monitor application to do this test. "Heart Rate Monitor" shows up on Windows Bluetooth scan, but I am not able to pair with the board.
Although I compile for the 20736, I understand that this same code works on the 20737 part. So I do the following without changing the firmware.... On the same PC I am able to download the firmware onto an Anaren board (Dev Kit A20737A-MSDK1 with module base on BCM20737) and the "Heart Rate Monitor" shows up on Windows Bluetooth scan. I am then able to pair with the device without any issues.
Another symptomatic difference between these is that the BCM20736S-based device will only show up on Windows' discovery screen for 8-12 seconds. The Anaren-based device will appear on Windows' discovery screen for 40 or more seconds.
I repeated these tests with the Speed Test and several other SDK apps, and I get the exact same results.
So is there any firmware/compiler reason that the Anaren board would work in this case, but my PCB with the BCM20736S would not pair? Does this point towards a hardware issue on my PCB, or are there possible software reasons for this issue?
Thanks,
Aaron
Show Less