查看: 1162|回复: 2

[原创] 【经验分享】在kw41的HRS应用中使能I2C接口

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20003
最后登录
2024-4-24
发表于 2021-4-14 11:25:53 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-4-14 11:29 编辑

开发板FRDM-KW41
开发软件,mcuxpresso
首先导出HRS工程
pastedImage_1.png
pastedImage_2.png

找到app_preinclude.h 这个文件,然后作如下修改
增加heap
#define gTotalHeapSize_c 9000‍‍‍‍‍‍‍‍‍‍‍‍‍
定义最大接口数量
#define gSerialManagerMaxInterfaces_c 1‍‍‍‍‍‍‍‍‍‍‍‍‍
禁用低功耗
#define cPWR_UsePowerDownMode 0‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

创建两个文件 I2C_Test.h and I2C_Test.c
pastedImage_3.png
打开...\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
pastedImage_5.png



回复

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20003
最后登录
2024-4-24
 楼主| 发表于 2021-4-16 10:01:02 | 显示全部楼层
l3142600073 发表于 2021-4-14 22:39
请问你这个图用的什么软件

软件是mcuxpresso,逻辑分析仪是saleae logic
回复 支持 1 反对 0

使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-24 18:42
  • 签到天数: 206 天

    [LV.7]常住居民III

    18

    主题

    311

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2743
    最后登录
    2024-4-9
    发表于 2021-4-14 22:39:48 | 显示全部楼层
    请问你这个图用的什么软件
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 17:57 , Processed in 0.134811 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表