I received a question about FSCI host and questions regarding to the FSCI Host Heart Rate Sensor demo provided as part of the KW40 Software Connectivity Package. First of all, we need to understand what is a FSCI, in order to explain this we need to know that there could be three types of system architectures when thinking on BLE applications. I will try to summarize these three types as shown next:
1. System on a Chip. It is when we develop all the application in the same chip, this is what we usually would implement when designing sensors using KW40. All the stack and applications is developed in one chip, KW40/KW30 in this case. Hence, we define #1 as the one in which we can perform everything using one chip.
2. Dual IC over HCI. It can be a type of architecture when big and powerful processor is needed in the application which is running BLE stack, hence, it only requires an external controller which receive HCI commands through serial interface like UART. In this case, KW40Z would be programmed with the "hci_app" included in KW40Z Connectivity Software package. Then, KW40Z would be acting as a controller.
3. Dual IC(Connectivity Device). Similar to #2, it is when a big and powerful processor is needed in the application, however, in this case, there is one difference, the BLE stack and the controller is implemented in the second IC. In this case, we can say that "big processor" is a K22F and the device which has BLE stack and controller is the KW40. It is a case which can be tested in the USB-KW40Z board. Hence, K22F would implement NXP proprietary protocol to control KW40 programmed with the "ble_fsci_app".
So, what is FSCI?, FSCI is the proprietary protocol that NXP introduced to create applications in which case #3 is required, basically, FSCI is a serial protocol developed to be able to control Connectivity Stack through serial commands. BLEHSFSCIRM.pdf document is provided to provide more information about the protocol when using BLE communcations, if customer is interested in IEEE 802.15.4 use case, 802154FSCIRM.pdf document can be referenced.
Now, when talking about the case #3, NXP introduces its FSCI proprietary protocol which is used to communicate between a bigger processor to the KW40. NXP provides an example about how to perform an application following this system architecture. Hence, since there are two processors in the system, it is required to have two applications:
1.ble_fsci_host_heart_rate_sensor. This application should be programmed in the K22F device on the USB-KW40Z.
2. ble_fsci_app. This application should be programmed in the KW40 device on the USB-KW40Z.
Both applications should be programmed through the SWD pin connectors available on USB-KW40Z. Hence, JLINK tool is required. Both applications are provided in the KW40Z Connectivity Software.
Once applications has been programmed on each device(K22F and KW40Z). Unplug and plug the USB-KW40Z from the PC and press SW1 button on USB-KW40Z.
Kinetis BLE Toolbox mobile application could be used to test the application. Select Heart Rate app of the Kinetis BLE Toolbox, then, FSH_HRS will be enumerated in the mobile application. Select FSL_HRS, then it will get connected and random heart rate measurements will be sent from the USB-KW40Z to the mobile application.
Hello, I am running the 2 IC architecture with a USB dongle (MKW22D256) running Thread protocol. Where USB dongle creates an ethernet interface and communicates to my linux machine by FSCI interface.
Is there any utility for communication with USB dongle over FSCI.
Could you please share the timeline for the beta release of FSCI API for Linux?
No, we don't have an example at this moment. There should be something later this year.
Is there any example that we can use in Linux machine to send FSCI commands at KW40/KW41 ?
Nice article. In Dual IC (Connectivity Device) mode, how we can control KW41 (beacon transmitter) from Linux machine using FSCI commands through UART?
It depends on the application. If you are interested in FSCI, it is needed to develop FSCI protocol on Linux machine to send messages through UART interface to KW41Z. Other approach could be using HCI application plus Blue Z Linux stack.
Regarding the first option, please, refer to the FSCI document (BLEHSFSCIRM.pdf) included in the KW40 Connectivity Software package to understand what is needed for the FSCI protocol. It could be found in the path:
"C:\Freescale\KW40Z_Connectivity_Software_1.0.1\ConnSw\doc"
For the second option, please, refer to the next community post:
FRDM-KW40Z Bluetooth LE Controller Usage with the Linux hcitool
Hope this helps.
Thanks Jose. I would like to get some help on this.... "If you are interested in FSCI, it is needed to develop FSCI protocol on Linux machine to send messages through UART interface to KW41Z."
is there any example that we can use in Linux machine to send FSCI commands after loading ble_fsci_app in KW41?