Smart Bluetooth Forum Discussions
There is a byte we use in NVRAM that changes based on the hardware variation of the board we program. However, in order to avoid having to maintain a specific build for each hardware variation, we'd like to have a single build and just modify that NVRAM byte at program time. Is this possible?
Show LessCould you tell me how to change the device name characteristic from GATT database to other device name stored in NVRAM
const UINT8 gatt_database[]= // Define GATT database
{
// ***** Primary service 'Generic Access'
//<Name>Generic Access</Name>
//<Uuid>1800</Uuid>
//Service handle: HDLS_GENERIC_ACCESS
//Service UUID: UUID_SERVICE_GAP
PRIMARY_SERVICE_UUID16 (HDLS_GENERIC_ACCESS, UUID_SERVICE_GAP),
//<Name>Device Name</Name>
//<Uuid>2A00</Uuid>
CHARACTERISTIC_UUID16 (HDLC_GENERIC_ACCESS_DEVICE_NAME,
HDLC_GENERIC_ACCESS_DEVICE_NAME_VALUE,
UUID_CHARACTERISTIC_DEVICE_NAME,
LEGATTDB_CHAR_PROP_READ,
LEGATTDB_PERM_READABLE,
6),
'a','b','c','d','e','f',
}
APPLICATION_INIT()
{
bleapp_set_cfg((UINT8 *)gatt_database,
gatt_database_len,
(void *)&homedoor_cfg,
(void *)&homedoor_puart_cfg,
(void *)&homedoor_gpio_cfg,
homedoor_create);
BLE_APP_ENABLE_TRACING_ON_PUART();
}
void homedoor_create(void)
{
if (bleprofile_ReadNVRAM(VS_BLE_HOST_LIST, sizeof(homedoor_devicename), (UINT8 *)&homedoor_devicename))
{
@// I will want to change device name "abcdef" to homedoor_devicename. How I can do it ????????????????
Show LessThis is a continuation of the discussion here that began as comments on a document: http://community.broadcom.com/inbox?objectType=-1805099612&objectID=1001&filter=notifications&et=actionqueue.item.new#ob…
In reference to the conversation surrounding the BCM20736E (SIP module version with no internal antenna or regulatory), wsipada states: "Ok, thanks. We have knowledge and experience in antenna design, so my interest is mainly on the module itself. For now I will more in detail look into the BCM20736s data sheet and use pin 10 for the external antenna. What I noticed in BCM20736s data sheet is that it's unclear which pins are used for puart rts and cts, I think there may be a typo on which pin is used for rts"
Unfortunately, P1 (Referenced int he HW interfaces document) is tied internally to the WP function of the internal EEPROM, so flow control is not available on the module. A while back we had to remove this from the datasheet as discussed in this thread: Re: BCM20732S UART RTS pin
So essentially, PUART RTS/CTS is not available on the SIP module, but it is available on QFN SoC package: BCM20737 SOC Data Sheet
This is discussed in much greater detail within the following two threads (thank you mkim)
Need clarification on PUART RTS/CTS flow control support
PUART RTS/CTS Hardware Flow Control
Since you need flow control and have no intentions of using the built-in antenna/existing regulatory the SIP module offers, the SoC may be a better path for you anyway.
Show LessHi
We have done our custom board populated with BCM20737S. The schematic is the WICED sens schematic.
I'm able to program the boards only with the recovery procedure.
The HCI download doesn't work (never worked on our custom board).
What i've tested :
- BCM20737S RXPIN (pin18) is pulled down to GND via resistor. When USB is connected, I've a high level. The device doesn't start (so i assume it is in programming mode).
- download log in the build directory : BluetoolDownloadMinidriver failed! (and only this line)
- device is detected
- make target = WICED_SENSE-BCM920737TAG_Q32 download
logic voltage is compatible with BCM20737S voltage range : 2.5v
i use wiced sense sw project and the WICED smart ide.
do you have any idea what i need to test in order to have a better diagnostic, please ?
thank you
best regards
Show LessHi,
is it possible to use the Tag-Board without a connection to the EEPROM or serial flash?
When my BCM20736S circuit was connected to the laptop (for programming and debugging) via the FTDI 3.3V USB to Serial cable, it was working fine. But when I disconnected the laptop and ran the BCM20736S under battery power, our circuit failed.
I found the problem and it was a rather interesting find... something I think is worth sharing here in case others might be affected by it.
The voltage regulator was set for 2.2V for powering the BCM20736S. With this voltage, the GPIO logic high output level is 1.8 volts (VDD-0.4 per Table 13 of the BCM20736S Technical Reference manual). This is too low to drive the CMOS ADC in our circuit, which wants a minimum of 1.96 volts for a logic high signal (based on it's supply voltage of 2.8V).
The question becomes then, why do I see this problem only when running on battery power and not when I am connected to the laptop? The answer came when I disconnected the UART_RX line between the BCM20736S and the laptop. In this configuration I also see the problem, even when running on laptop/USB power and no battery attached.
When the UART_RX pin of the BCM20736S is connected to the laptop through the FTDI USB 3.3V programming cable, it somehow gives a boost to the GPIO logic output level so instead of 1.8 volts for a high level the scope shows 2.0 volts. Just high enough to operate the ADC. This masked the error in the circuit design for several weeks until it was uncovered by tested under battery power.
The root cause was an incorrect schematic (our design was flawed)... but the impact was compounded by the undocumented 'feature' of the UART_RX providing a voltage boost to the GPIO output. You might want to pass this information to the BCM module designers so they can design it out of the system, or at least document it somewhere if it can't be avoided. Fortunately for us, our circuit designer was on vacation last week and he missed his deadline to send the layout for production. Also fortunate that I switched to testing under battery power when I did and thus discovered the problem before it was too late. Now he can correct the voltage coming from the regulator (2.4V instead of 2.2V) and this change will be in the layout that goes to production this week.
I'd be interested to hear what the module designers have to say about this, if anything.
Show LessCan you please post a PDF showing component placement for WICED Sense PCB? Great if this could be put in the schematics PDF for all eval kits.
Thanks!
Johan
Show LessAs a follow up to this thread:Firmware security (20732)
Does this also apply to the 20732S as well (beyond disassembling the package and reading out the FW from the EEPROM in the SIP). What is the recommended way of securing the firmware?
Show LessHello,
SDK:2.1.1
Hardware:Tag board + iPhone
I want to send 1-22 bytes from iPhone to the Tag board. The length is not fixed, variable.
I have studied the SDK's samples but couldn't the sample for variable length write.
Now, the characteristic setting is like this,
CHARACTERISTIC_UUID128_WRITABLE (HDLC_VSP_VSP_TX,
HDLC_VSP_VSP_TX_VALUE,
__UUID_VSP_VSP_TX,
LEGATTDB_CHAR_PROP_WRITE_NO_RESPONSE,
LEGATTDB_PERM_WRITE_CMD,
22),
0x00,...0x00, //22 of 0x00
And I can get the data in the handler,
int test3_write_handler(LEGATTDB_ENTRY_HDR *p)
{
UINT8 writtenbyte;
UINT16 handle = legattdb_getHandle(p);
int len = legattdb_getAttrValueLen(p);
UINT8 *attrPtr = legattdb_getAttrValue(p);
BOOL changed;
...etc...
then I could get the data. But the length is always 22, so there is no length infomation of each packet.
For example, when iPhone send one byte
0x00
then send two bytes
0x00 0x00
then I can not to know what was the second packet.
I found the setting of "LEGATTDB_PERM_VARIABLE_LENGTH" in MMP920732SW-AN103-R application note, P12, table2.
So I think there is a way to get variable length write data, isn't there?
Show LessHey guys, it's me again.
I tried to program my first BLE app with the WICED Turorials but there are still a lot of questionmarks in my head...
I used the WICED Smart Designer to generate the GATT but I don't understand in which order the single functions are performed. The program tools I used until now always need a main-function. But I can't find this after the code-generation.
Can you tell me in which order the function calls proceed?
Show Less