本帖最后由 小恩GG 于 2021-4-14 11:29 编辑
开发板FRDM-KW41 开发软件,mcuxpresso 首先导出HRS工程
找到app_preinclude.h 这个文件,然后作如下修改 增加heap #define gTotalHeapSize_c 9000
定义最大接口数量 #define gSerialManagerMaxInterfaces_c 1
禁用低功耗 #define cPWR_UsePowerDownMode 0
创建两个文件 I2C_Test.h and I2C_Test.c 打开...\framework\SerialManager\Interface\SerialManager.h 修改gSerialMgrUseIIC_c宏为1,gSerialMgrIICAddress_c这个宏可以用来改变要访问的从机地址。 /* Defines which serial interface can be used */#ifndef gSerialMgrUseUart_c
#define gSerialMgrUseUart_c (0)
#endif
#ifndef gSerialMgrUseUSB_c
#define gSerialMgrUseUSB_c (0)
#endif
#ifndef gSerialMgrUseUSB_VNIC_c
#define gSerialMgrUseUSB_VNIC_c (0)
#endif#ifndef gSerialMgrUseIIC_c
#define gSerialMgrUseIIC_c (1)
#endif#ifndef gSerialMgrUseSPI_c
#define gSerialMgrUseSPI_c (0)
#endif
#ifndef gSerialMgrUseCustomInterface_c
#define gSerialMgrUseCustomInterface_c (0)
#endif
在I2C_Test.h文件里定义两个函数 #ifndef I2C_TEST_H_
#define I2C_TEST_H_
#include "SerialManager.h"
serialStatus_t I2C_Init(void);
void I2C_send(void);
#endif /* I2C_TEST_H_ */
在I2C_Test.c里定义,test_data放要传输的数据 #define I2C_INSTANCE (1)
uint8_t I2C_peripheral_Id;char test_data [] = "hello world";
在I2C_Test.c里实现这两个函数 serialStatus_t I2C_Init(void)
{
serialStatus_t serial_manager_status;
SerialManager_Init();
serial_manager_status = Serial_InitInterface(&I2C_peripheral_Id, gSerialMgrIICMaster_c,I2C_INSTANCE);
return serial_manager_status;
}
void I2C_send(void)
{
Serial_Print(I2C_peripheral_Id, test_data, gNoBlock_d);
}
找到 函数BleApp_Init,初始化I2C void BleApp_Init(void)
{
/* Initialize application support for drivers */
I2C_Init();
BOARD_InitAdc();
}
找到BleApp_HandleKeys函数,添加如下代码 case gKBD_EventPressPB2_c:
{
mToggle16BitHeartRate = (mToggle16BitHeartRate)?FALSE:TRUE;
I2C_send();
}
这样每次按键就会通过i2c发送hello,world 如果要控制其他外设就修改这个宏SerialMgrIICAddress_c,然后修改test_data里发送数据就可以了。板子自带的传感器地址是0x1f
|