请选择 进入手机版 | 继续访问电脑版
查看: 2893|回复: 0

[原创] 【FRDM-K32L2B3 开发板试用】+心电ECG传感器解析和连接

[复制链接]
  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    34

    主题

    78

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1188
    最后登录
    2025-2-8
    发表于 2020-9-22 11:03:13 | 显示全部楼层 |阅读模式
    1 . 本项目拟采用心电传感器MAX30003WING开发板,使用SPI端口连接。这个开发板是配套美信WING开发板,因此引脚都是兼容的,对应采用K32L2B3则连接方法如下,采用了SPI连接线和中断使能,
    0kl32_0.JPG
    在开发板的连接如下,
    0kl32_1.JPG

    因此需要按照对应的引脚连接到MCU上实现功能。
    0kl32_2.JPG
    具体的外部连接只需要连接2点电极,含接触电势的等效电路图为,
    0kl32_3.JPG
    2. 程序的逻辑
    2.1 设定串口传输为115200-8-1-N
    2.2 设定ecg FIFO almost full interrupt 的中断引脚
    2.3 设定SPI的通道,MOSI,MISO,SCK的引脚
    2.4 配置ECG的参数设定,这些在CMD的指令中传输。
    2.5 通过对应SPI的接口参数选择,读取数据,直接显示出采集的ECG数据
    2.6 通过串口数据显示出来。

    3 使用SPI的范例Demo,运行通过,可以作为开发的模板继续进行。
    1. /*
    2. * Copyright (c) 2015, Freescale Semiconductor, Inc.
    3. * Copyright 2016-2017 NXP
    4. * All rights reserved.
    5. *
    6. * SPDX-License-Identifier: BSD-3-Clause
    7. */

    8. #include "fsl_spi.h"
    9. #include "board.h"
    10. #include "fsl_debug_console.h"

    11. #include "pin_mux.h"
    12. #include "clock_config.h"
    13. /*******************************************************************************
    14. * Definitions
    15. ******************************************************************************/
    16. #define EXAMPLE_SPI_MASTER              SPI0
    17. #define EXAMPLE_SPI_MASTER_SOURCE_CLOCK kCLOCK_BusClk
    18. #define EXAMPLE_SPI_MASTER_CLK_FREQ     CLOCK_GetFreq(kCLOCK_BusClk)

    19. /*******************************************************************************
    20. * Prototypes
    21. ******************************************************************************/

    22. /*******************************************************************************
    23. * Variables
    24. ******************************************************************************/
    25. #define BUFFER_SIZE (64)
    26. static uint8_t srcBuff[BUFFER_SIZE];
    27. static uint8_t destBuff[BUFFER_SIZE];
    28. spi_master_handle_t handle;
    29. static volatile bool masterFinished = false;
    30. /*******************************************************************************
    31. * Code
    32. ******************************************************************************/
    33. static void masterCallback(SPI_Type *base, spi_master_handle_t *masterHandle, status_t status, void *userData)
    34. {
    35.     masterFinished = true;
    36. }

    37. int main(void)
    38. {
    39.     spi_transfer_t xfer = {0};
    40.     spi_master_config_t userConfig;
    41.     uint32_t err     = 0;
    42.     uint32_t i       = 0;
    43.     uint32_t srcFreq = 0;

    44.     BOARD_InitPins();
    45.     BOARD_BootClockRUN();
    46.     BOARD_InitDebugConsole();
    47.     PRINTF("\n\rMaster Start...\n\r");
    48.     /*
    49.      * userConfig.enableStopInWaitMode = false;
    50.      * userConfig.polarity = kSPI_ClockPolarityActiveHigh;
    51.      * userConfig.phase = kSPI_ClockPhaseFirstEdge;
    52.      * userConfig.direction = kSPI_MsbFirst;
    53.      * userConfig.dataMode = kSPI_8BitMode;
    54.      * userConfig.txWatermark = kSPI_TxFifoOneHalfEmpty;
    55.      * userConfig.rxWatermark = kSPI_RxFifoOneHalfFull;
    56.      * userConfig.pinMode = kSPI_PinModeNormal;
    57.      * userConfig.outputMode = kSPI_SlaveSelectAutomaticOutput;
    58.      * userConfig.baudRate_Bps = 500000U;
    59.      */
    60.     SPI_MasterGetDefaultConfig(&userConfig);
    61.     srcFreq = EXAMPLE_SPI_MASTER_CLK_FREQ;
    62.     SPI_MasterInit(EXAMPLE_SPI_MASTER, &userConfig, srcFreq);

    63.     /* Init Buffer */
    64.     for (i = 0; i < BUFFER_SIZE; i++)
    65.     {
    66.         srcBuff[i] = i;
    67.     }

    68.     /* Send to slave */
    69.     xfer.txData   = srcBuff;
    70.     xfer.rxData   = destBuff;
    71.     xfer.dataSize = BUFFER_SIZE;
    72.     SPI_MasterTransferCreateHandle(EXAMPLE_SPI_MASTER, &handle, masterCallback, NULL);
    73.     SPI_MasterTransferNonBlocking(EXAMPLE_SPI_MASTER, &handle, &xfer);

    74.     while (masterFinished != true)
    75.     {
    76.     }

    77.     /* Check if the data is right */
    78.     for (i = 0; i < BUFFER_SIZE; i++)
    79.     {
    80.         if (srcBuff[i] != destBuff[i])
    81.         {
    82.             err++;
    83.             PRINTF("The %d is wrong! data is %d\n\r", i, destBuff[i]);
    84.         }
    85.     }
    86.     if (err == 0)
    87.     {
    88.         PRINTF("Succeed!\n\r");
    89.     }

    90.     while (1)
    91.     {
    92.     }
    93. }
    复制代码




    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-2-16 06:04 , Processed in 0.111223 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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