In one of our applications, our host MCU runs short of GPIOs. So we plan to use MCSB2-4 of BHP260AP as GPIO expansion.
It looks like we can change the gpio line in xxx.cfg to configure the initial state of the GPIOs. However, I could not find a way to control those GPIOs from my host MCU.
Any suggestions or pointers?
Solved! Go to Solution.
After a bit more reading, I come up with the following method using Physical Sensor Control Parameters:
BHI260 side: create a physical sensor driver implementing set_sensor_ctl function, which calls setGPIOHigh/Low() according to HIF commands.
Host side: calls bhy2_hif_set_sensor_ctrl() to control which GPIO to manipulate.
Can anyone confirm if that is the right approach?
The GPIO of BHI260AP couldn'be be directly accessed through the sensor API interface.
You need to download the SDK of BHI260AP from here https://www.bosch-sensortec.com/products/smart-sensors/bhi260ap/, and refer to SENSOR_TYPE_EXLED example in SDK to access GPIO port.
I did read the ExLed example code. I understand I can manipulate GPIO from within BHI260 FW by calling setGPIOHigh/Low(gpio).
But I need to control the GPIOs from host. So I am thinking to use HIF bhy2_hif_set_sensor_ctrl() from the host side to set physical sensor parameters, and in BHI260 FW, I hook up .set_sensor_ctl in sensor descriptor, which in turn calls setGPIOHigh/Low.
Please see my previous post for that.
Is that the right way?
The simplest method is to use the example of LED. The host side enable the LED virtual sensor ID, and controls GPIO through bhy2_set_virt_sensor_cfg() interface, setting sample_rate to change the control GPIO high or low.