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

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

[复制链接]

该用户从未签到

25

主题

64

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1027
最后登录
2024-5-21
发表于 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. }
复制代码




回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-5-26 09:47 , Processed in 0.107298 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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