Smart Bluetooth Forum Discussions
Hi
I'm designing PCB for custom board using BCM20737S.
Then I have to make the board as small as possible and want radio wave to propagate over about 20 meters.
So, basically I think that the top of PCB abides by the recommended layout in BCM20737S Bluetooth Low Energy SiP Module Technical Reference.
However, I couldn't understand whether the the Keep-Out area showed in Technical Reference also includes others (i.e. bottom layer) or not.
If it includes other layers, perhaps I can't keep the recommendation layout.
In that case, please give me some advice to make board as smaller with keeping radio wave as strong as possible.
Sincerely
Show LessWhat's Broadcom plan and timeline on supporting Bluetooth 4.2 standard in the future product?
Is there FCC and/or NCC approval for the BCM20736S devices? If not, is approval expected for this device and in what time frame?
Thanks,
Briana
Show LessI think that the interval is a default value and it's not defined in the BLE profile configuration so i didn't find the variable to change the default value
Show LessHi sir,
I Download puart_control App in bcm2073x ,
I use my Terminal for check trace from "WICED Smart UART Controller (.exe)" .
When I click "Start Device Discovery" , some message print to my Terminal.
but I not found message :"blecm evt handler" where it trace on file..
who can tell me ..
Thanks you
Show LessMy application uses HIDoff to save power and wakes up from one of several GPIO interrupts.
Is there any way to tell which line generated the interrupt that cause the wakeup?
Is there a way to tell whether the wakeup was due to an interrupt, or due to some other cause (such as powerup)?
Show LessHi all,
in our application we use the BCM20736S in slave-role. From the smartphone side we need to be connected with multiple slave-devices at one time. Our Android-App developers now have some issues using different Android-Smartphones. For example: Multiple connection establishment works fine on Nexus 5 (Android 5.0), Sony Xperia Z1 (Android 4.4.2) and Motorola Moto G (Android 4.4.4). On the other hand with Samsung Galaxy Note 3 (Android 4.4.2), Samsung Galaxy S3 (Android 4.3) or Sony Xperia E1 (Android 4.3) only one connection to a slave-device is possible at a time.
Has anyone of you seen the same issues? And how can we resolve it?
Best regards,
Udo
Show Less1. Use of Pre-built libfixmath Lib
Overview
Aims at offering useful math functions to WICED Smart developers, this library is implemented based on the open source fix-point math lib called ‘libfixmath’. In general, this lib supports at most 37 fix-point math functions. For a complete list of the math functions supported, please refer to the table in section 3.
Goal of this section
This section describes necessary steps to use the pre-built math functions lib in WICED Smart SDK. A test application is also included to demonstrate the use of this lib.
Files required in this section
libfixmath lib:
Header files: libfixmath.h fix16.h fract32.h int64.h uint32.h (5 in total)
Static lib file: libfixmath.a
libfixmath_test application:
libfixmath_test.c
libfixmath_test.h
makefile.in
Notes
Following description assumes that you are using WICED Smart SDK 1.x.x. It will work for WICED Smart SDK 2.x.x after some minor changes.
Step1: Copy files to specific directory.
Copy the 5 header files to the directory below:
<WICED-Smart-SDK>/include
Copy the static lib file “lib_fixmath.a” to the directory below:
< WICED-Smart-SDK > /Wiced-Smart/spar
Step2: Edit the makefile.
Open the file “makefile” under the directory of < WICED-Smart-SDK > /Wiced-Smart/spar.
At around line 150, there is a block of commands which made the elf file. You should add the name of the static lib file at the end of the line which starts with $(XLD). An example is shown as below.
Figure 1 Edit the makefile
Step3: Verify your porting.
Copy the directory of “libfixmath_test” to the path below:
<WICED-Smart-SDK>/Apps/RAM
At the Make Target panel, add a new target. Edit its name to the one below:
RAM.libfixmath_test-BCM920732TAG_Q32 download
Double click on the new-added target. After the application is running on the WICED Smart platform, by pressing the user button on the BCM20732S EVB, we could verify the output of the test application via a serial terminal. If the application runs safely and the calculation results proved to be right, then you have verified your porting.
An example of the output of the “libfixmath_test” application is as below:
Figure 2 Output of test program
From the test application we could found that, once we include the header file “fixmath.h” in our application, we are able to use the corresponding math functions freely as if they were originally part of the SDK.
2. Build libfixmath for WICED Smart SDK
Goals of this section
In this section, you will learn about the way to build this math functions lib, and you may customize your own math function lib in the same way.
Files required in this section:
libfixmath source directory.
Header files: libfixmath.h fix16.h fract32.h int64.h uint32.h (5 in total)
Source files: fix16.c fix16_exp.c fix16_sqrt.c fix16_str.c fix16_trig.c fract32.c uint32.c (totally 7)
Makefile
Step1: Source code customization
Source code modification:
The source code of the “libfixmath” lib is in the files of the “libfixmath source” directory mentioned above. However, sometimes we may need change the source code according our own requirement.
For example, in “fix16_str.c”, the libc function “isspace” and “isdigit” is used in the function “fix16_from_str” but the WICED Smart platform does not include these functions. Then you have to implement them in your own method.
Macros definition:
The libfixmath lib uses some macros as interfaces for the developers to customize the implementation of the lib files. The 7 macros are listed below:
#define FIXMATH_NO_CACHE
#define FIXMATH_SIN_LUT
#define FIXMATH_FAST_SIN
#define FIXMATH_NO_OVERFLOW
#define FIXMATH_NO_ROUNDING
#define FIXMATH_NO_64BIT
#define FIXMATH_OPTIMIZE_8BIT
Just as their name indicates, the macros are defined to enable or disable some properties of the math lib functions. For example, the definition of FIXMATH_NO_CACHE will lead to no cache used in the implementation of some complex math functions such as exp(x) or sin(x).
The definition of the macros should be done in fixmath.h or fix16.h.
Step2: Generate the math function lib file.
Generate the .o object files:
- Copy all the 5 header files and the 7 source files into an arbitrary application, “RAM.hello_sensor” for example. The path should be <WICED-Smart-SDK>/Apps/RAM/hello_sensor.
- Open the “makefile.inc” in the application directory above and add the names of the 7 source files at the end of line 11 starting with “APP_SRC”. That means add the 7 .c files as source files of the application too. The modification should be similar to the shortcut below:
Figure 3 Makefile to compile
- Double click on the make target panel and make the hello_sensor application. You will find 7 .o files named after the 7 .c source files in the directory below:
<WICED-Smart-SDK>/build/ libfixmath_test-BCM920732TAG_Q32-rom-ram-Wiced-release
Now you have the object files of your customized source code.
Generate the .a static lib file:
The process to generate the .a static lib file is actually to pack the 7 object files into a special one. Please follow the next steps to finish the lib file generation.
- Backup the Makefile in the directory <WICED-Smart-SDK>. You should recover it later.
- Copy the 7 object files and the “libfixmath source /Makefile” to the <WICED-Smart-SDK> and cover the original Makefile.
- Open a command window and change the path to <WICED-Smart-SDK>. By enter the command “make”, “lib_fixmath.a” static lib file will be created at the same directory. By enter the command “make lib_review”, you could see the content of “lib_fixmath.a”.
Figure 4 Compile output
- After the static lib file is successfully created, the original Makefile and the “hello_sensor” application should be recovered. You could also modify the Makefile as you like.
3. Functions Supported and Performance
The table below lists all the math functions that are supported in the pre-built math lib. For some time-consuming math functions (trigonometric functions, for example), time performance is tested. The performance data in the last column shows how much resource it costs to run the corresponding math functions in WICED Smart BCM920732 platform.
Function Name | Comment | Time cost(us) |
fix16_to_int(fix16_t a) | Format conversion | |
fix16_from_int(int a) | ||
fix16_to_str(fix16_t value, char *buf, int decimals); | 13.5841 | |
fix16_from_str(const char *buf); | 14.1913 | |
fix16_abs(fix16_t x) | Value adjust | |
fix16_floor(fix16_t x) | ||
fix16_ceil(fix16_t x) | ||
fix16_min(fix16_t x, fix16_t y) | ||
fix16_max(fix16_t x, fix16_t y) | ||
fix16_clamp(fix16_t x, fix16_t lo, fix16_t hi) | ||
fix16_add(fix16_t a, fix16_t b) | Basic calculation | 0.8148 |
fix16_sadd(fix16_t a, fix16_t b) | ||
fix16_sub(fix16_t a, fix16_t b) | ||
fix16_ssub(fix16_t a, fix16_t b) | ||
fix16_mul(fix16_t inArg0, fix16_t inArg1) | 2.0200 | |
fix16_smul(fix16_t inArg0, fix16_t inArg1) | 3.1018 | |
fix16_div(fix16_t inArg0, fix16_t inArg1) | 6.0079 | |
fix16_sdiv(fix16_t inArg0, fix16_t inArg1) | 7.1820 | |
fix16_mod(fix16_t x, fix16_t y) | ||
fix16_lerp8(fix16_t inArg0, fix16_t inArg1, uint8_t inFract) | Interpolation | |
fix16_lerp16(fix16_t inArg0, fix16_t inArg1, uint16_t inFract) | ||
fix16_sin_parabola(fix16_t inAngle) | trigonometric | 9.6740 |
fix16_sin(fix16_t inAngle) | 14.0997 | |
fix16_cos(fix16_t inAngle) | 14.8114 | |
fix16_tan(fix16_t inAngle) | 34.6207 | |
fix16_asin(fix16_t inValue) | Anti-trigonometric | 33.8250 |
fix16_acos(fix16_t inValue) | 35.0975 | |
fix16_atan(fix16_t inValue) | 17.3929 | |
fix16_atan2(fix16_t inY, fix16_t inX) | 16.3435 | |
fix16_rad_to_deg(fix16_t radians) | R/d conversion | 2.0632 |
fix16_deg_to_rad(fix16_t degrees) | 2.0030 | |
fix16_sqrt(fix16_t inValue) | Sqrt & sq | 11.4745 |
fix16_sq(fix16_t x) | ||
fix16_exp(fix16_t inValue) | Exp & log | 20.9141 |
fix16_log(fix16_t inValue) | 458.4487 | |
fix16_log2(fix16_t x) | 40.1307 | |
fix16_slog2(fix16_t x) | 39.8963 |