206|3

231

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【KW41Z开发板测评】⑤蓝牙调试工具控制台灯 [复制链接]

本帖最后由 yin_wu_qing 于 2025-3-20 13:06 编辑

一、前言

        前段时间比较忙,最近终于缓过来,而距离规定评测KW41Z开发板的时限越来越近了,今天来分享一下前段时间个人评测时遇到的一些问题与经验。承接上期的④驱动直流电机的帖子,预期是通过该功能的实现,然后将其主干函数接口移入蓝牙串口demo中,然而结合PWM0四路通道、PWM1两路通道、PWM2两路通道分布来看,有两个通道的管脚被复用成串口,还有几个复用管脚没有被引出到两边排座,因此可用来兼顾“bluetooth_wireless_uart”工程的原本功能后,再调试出两路PWM显得比较紧凑,加之调试当中发现,板子两边的排座接口绝大多数是需要自行焊接好0Ω的电阻才能正常使用,这些结合官方提供的原理图可知,如下图标识的红色框。

二、工程配置

         根据上述,咱也暂时不考虑将PWM功能接口移入蓝牙串口工程,在原计划上稍作更改,先实现一个蓝牙控制台灯功能。将SDK中的“frdmkw41z_wireless_examples_bluetooth_wireless_uart_bm”工程导出至MCUXpresso IDE中,然后编译下载到开发板中运行,发现即可以通过手机端的“IoT_Toolbox”工具去发送字符,然后在PC端的串口工具上接收打印;也可以通过PC端的串口调试助手给开发板发数据,然后在手机端的App显示接收数据,这样看来,K41Z的“bluetooth_wireless_uart_bm”工程似乎是K41Z相当于一个蓝牙数据透传网络中的“中间桥梁”。因此在此基础上去控制板上的某一个管脚输出高低电平,显得尤为简单。然而万万没想到的是也没那么顺利,听我娓娓道来。

①、也不知道当初这款板是为何设计的,两边的排座是不能直接使用的,因为板上都没焊接相应的贴片电阻。于是本人使用PTC19做为将来通过蓝牙来控制的GPIO口,按照原理图连接关系,需要将SH15短接,这里使用烙铁在SH15处焊接了根导线,正如下图所示。

②、接下来配置PTC19做为GPIOC_19,并初始化。

③、在BleApp_ReceivedUartStream()串口接收函数中添加逻辑处理代码。

三、代码完善

pin_mux.c源文件中,将PTC19添加至LED初始化函数中。

  • #define PIN0_IDX 0u /*!< Pin number for pin 0 in a port */
  • #define PIN1_IDX 1u /*!< Pin number for pin 1 in a port */
  • #define PIN18_IDX 18u /*!< Pin number for pin 18 in a port */
  • #define PIN19_IDX 19u /*!< Pin number for pin 19 in a port */
  • /*
  • * TEXT BELOW IS USED AS SETTING FOR THE PINS TOOL *****************************
  • BOARD_InitLEDs:
  • - options: {coreID: singlecore, enableClock: 'true'}
  • - pin_list:
  • - {pin_num: '16', peripheral: GPIOB, signal: 'GPIO, 0', pin_signal: PTB0/LLWU_P8/XTAL_OUT_EN/I2C0_SCL/CMP0_OUT/TPM0_CH1/CLKOUT}
  • - {pin_num: '37', peripheral: GPIOC, signal: 'GPIO, 1', pin_signal: PTC1/ANT_B/I2C0_SDA/UART0_RTS_b/TPM0_CH2/BLE_RF_ACTIVE}
  • - {pin_num: '7', peripheral: GPIOA, signal: 'GPIO, 19', pin_signal: TSI0_CH13/ADC0_SE5/PTA19/LLWU_P7/SPI1_PCS0/TPM2_CH1}
  • - {pin_num: '6', peripheral: GPIOA, signal: 'GPIO, 18', pin_signal: TSI0_CH12/PTA18/LLWU_P6/SPI1_SCK/TPM2_CH0}
  • - {pin_num: '47', peripheral: GPIOC, signal: 'GPIO, 18', pin_signal: TSI0_CH6/PTC18/LLWU_P2/SPI0_SIN/I2C1_SDA/UART0_TX/BSM_DATA/DTM_TX}
  • * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR THE PINS TOOL ***
  • */
  • /*FUNCTION**********************************************************************
  • *
  • * Function Name : BOARD_InitLEDs
  • * Description : Configures pin routing and optionally pin electrical features.
  • *
  • *END**************************************************************************/
  • void BOARD_InitLEDs(void) {
  • CLOCK_EnableClock(kCLOCK_PortA); /* Port A Clock Gate Control: Clock enabled */
  • CLOCK_EnableClock(kCLOCK_PortB); /* Port B Clock Gate Control: Clock enabled */
  • CLOCK_EnableClock(kCLOCK_PortC); /* Port C Clock Gate Control: Clock enabled */
  • PORT_SetPinMux(PORTA, PIN18_IDX, kPORT_MuxAsGpio); /* PORTA18 (pin 6) is configured as PTA18 */
  • PORT_SetPinMux(PORTA, PIN19_IDX, kPORT_MuxAsGpio); /* PORTA19 (pin 7) is configured as PTA19 */
  • PORT_SetPinMux(PORTB, PIN0_IDX, kPORT_MuxAsGpio); /* PORTB0 (pin 16) is configured as PTB0 */
  • PORT_SetPinMux(PORTC, PIN1_IDX, kPORT_MuxAsGpio); /* PORTC1 (pin 37) is configured as PTC1 */
  • PORT_SetPinMux(PORTC, PIN18_IDX, kPORT_MuxAsGpio); /* PORTC18 (pin 47) is configured as PTC18 */
  • PORT_SetPinMux(PORTC, PIN19_IDX, kPORT_MuxAsGpio); /* Add use to driver extern LED */
  • }

LED.c源文件中,初始化函数中添加对PTC19的初始化。

  • gpioOutputPinConfig_t Externdled =
  • {
  • .gpioPort = gpioPort_C_c,
  • .gpioPin = 19,
  • .outputLogic = 0,
  • .slewRate = pinSlewRate_Slow_c,
  • .driveStrength = pinDriveStrength_High_c
  • };
  • /******************************************************************************
  • * Name: LED_Init
  • * Description: Initialize the LED module
  • * Parameters: -
  • * Return: -
  • ******************************************************************************/
  • void LED_Init
  • (
  • void
  • )
  • {
  • BOARD_InitLEDs();
  • (void)GpioOutputPinInit(ledPins, gLEDsOnTargetBoardCnt_c);
  • GpioSetPinOutput(&Externdled);
  • #if gLedRgbEnabled_d
  • LED_RgbLedInit();
  • #endif
  • /* allocate a timer for use in flashing LEDs */
  • #if gTMR_Enabled_d
  • mLEDTimerID = TMR_AllocateTimer();
  • #endif
  • #if gLedRgbEnabled_d && gRgbLedDimmingEnabled_d && gTMR_Enabled_d
  • /* allocate a timer for use in RGB dimming */
  • mRGBLedTimerID = TMR_AllocateTimer();
  • mRbgDimInfo.ongoing = FALSE;
  • mRbgDimInfo.interval = gRgbLedDimDefaultInterval_c;
  • #endif /* gLedRgbEnabled_d && gRgbLedDimmingEnabled_d && gTMR_Enabled_d */
  • }

wireless_uart.c源文件中的static void BleApp_ReceivedUartStream(uint8_t *pStream, uint16_t streamLength)函数中进行逻辑处理。

  • static void BleApp_ReceivedUartStream(uint8_t *pStream, uint16_t streamLength)
  • {
  • uint8_t *pBuffer = NULL;
  • /* Allocate buffer for asynchronous write */
  • pBuffer = MEM_BufferAlloc(streamLength);
  • if(pStream[0])
  • {
  • if(pStream[0]== 0x31)
  • {
  • GPIO_SetPinsOutput(GPIOC,19);
  • }
  • else if(pStream[0]==0x30)
  • {
  • GPIO_ClearPinsOutput(GPIOC,19);
  • }
  • }
  • if (pBuffer != NULL)
  • {
  • Serial_AsyncWrite(gAppSerMgrIf, pStream, streamLength, Uart_TxCallBack, pBuffer);
  • }
  • }

为了更好的用户体验,再将断开蓝牙后、再次广播时,将PTC19输出低,添加GPIO_ClearPinsOutput(GPIOC,19);

四、工程编译调试

1、基于以上操作,故将外接的LED连接到PTC19的排针座子上,结果编译后,将程序下载到板子上运行,短按一下板上的SW4,让开发板进入广播状态,然后手机端打开蓝牙、GPS,打开蓝牙调试助手,即可搜索到名为“NXP_WU”的蓝牙设备。连接后发现有创建三个服务,可通过Unknown Service服务发送字符给开发板。结果连接在PTC19管脚处的LED灯没任何反应,反而点亮了RGB灯的第一个管脚,即点亮了红色。

      这就有点费解了,而且高低电平与代码中操作PTC19管脚的逻辑刚好相反。再结合pin_mux.c源码中的管脚复用情况,电路原理图的管脚分布,跳线帽设置也是出厂时的状态,一段时间了也没研究出是何原因!

2、既然可以间接控制PTC1管脚的高低电平状态,这里笔者索性将控制台灯的管脚设置在TP24测试点上(见上面RGB灯原理图),将杜邦线焊接在该点上,如下图所示:

3、在某宝上掏了几个模块与5V日光灯,做为实现蓝牙控制台灯的硬件资源。连接的示意图如下:

所对应的实物硬件连接如下:

4、运行代码,使用”蓝牙调试助手“App给K41Z发有效字符,从而实现蓝牙远程控制台灯,效果见底下视频。

五、小结

      根据实际调试结果来看,PTC19管脚的信号控制似乎与PTC1(TP24)有关联,因为代码中逻辑处理部分是对PTC19管脚进行高低电平的控制,而实际应用是对PTC1起作用,通过焊接导线短接SH15处的PTC19排针座子并没有预设电平输出。尽管这块板比较陈旧,但想必硬件上也不会有大的问题吧?不然不会搜索一番,也没搜索到遇上类似的问题、现象。不知道咱们坛友有没有遇到类似的问题,欢迎回帖讨论。

播放器加载失败: 未检测到Flash Player,请到安装
蓝牙调试助手控制台灯

 

查看本帖全部内容,请登录或者注册
此帖出自NXP MCU论坛

最新回复

也可能是用的少所以网上也没有问题暴露。一般蓝牙好像也不太用nxp的器件。   详情 回复 发表于 前天 10:26

赞赏

1

查看全部赞赏

点赞 关注
 

回复
举报

7188

帖子

11

TA的资源

版主

沙发
 

哈哈,看到跟我的台灯差不多样子,大佬的图画得真心不错!

此帖出自NXP MCU论坛
 
 
 

回复

105

帖子

2

TA的资源

一粒金砂(中级)

板凳
 

给大佬点赞

此帖出自NXP MCU论坛
 
个人签名

点个灯吧

 
 

回复

7763

帖子

18

TA的资源

五彩晶圆(高级)

4
 

也可能是用的少所以网上也没有问题暴露。一般蓝牙好像也不太用nxp的器件。

此帖出自NXP MCU论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 5

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表