NXP UWB NCJ29D5开发(二)BlinkyLed例程

路径为UWB\NCJ29D5\NCJ29D5_CAS_Examples_v1.4\onic\BlinkyLed\toolsupport\keil
例程怎么来的可以看看上一篇NXP UWB NCJ29D5开发(一)环境搭建

1、

//系统选择外部晶振,时钟频率为55.2Mhz
phscaAppHal_Init(PHSCA_APPHAL_XO_CLOCK_SOURCE_55P2Mhz);

在文档NCJ29D5_AppHAL.chm里可以看到,路径为:UWB\NCJ29D5\NCJ29D5 SDK v11.0\Documentation
在这里插入图片描述
在这里插入图片描述

2、

	/*--- Init baseband to enable the LDOs to power VDD_GLOB for LEDs ---*//** 55.2M+xoClkDivderSet:0+hwAcceleratorCfg:0(software encoder) -->rfpllRxTime:75  rfpllTxTime:180*/phIscaBaseband_Config_t gphscaRciAppConfig_Static ={.Control_b.xoClockSel = PHSCA_BB_XO_CLOCK_SOURCE_55P2Mhz, //55.2M.Control_b.xoClkDivderSet = 0u,.Control_b.hwAcceleratorCfg = 0u,};uint16_t rfpllRxTxTime[2] = {0u, 0u};/* Update rfpll tx and rx rampup time in RciConfiguration */phscaAppHal_GetRfpllRxTxRampupTime(gphscaRciAppConfig_Static.Control_b.hwAcceleratorCfg,gphscaRciAppConfig_Static.Control_b.xoClkDivderSet,&rfpllRxTxTime[0u], &rfpllRxTxTime[1u]);gphscaRciAppConfig_Static.Control_b.rfpllRxTime = rfpllRxTxTime[0u];gphscaRciAppConfig_Static.Control_b.rfpllTxTime = rfpllRxTxTime[1u];/* Init Baseband */phscaBaseband_Init(gphscaRciAppConfig_Static);

这个是baseband的初始化过程,参数的设置目的可以在文档NCJ29D5_Baseband.chm可以看到,路径为:UWB\NCJ29D5\NCJ29D5 SDK v11.0\Documentation
在这里插入图片描述
很显然,例程的配置是第一行,从而让rfpllRxTime=75 rfpllTxTime=180

3、

/* Turn on crystal *//**When set to 1, the crystal oscillator is selected as input of the output buffer driving the XTAL_OUT pin.*If set to 0, the XTAL_OUT configuration is not altered*/phscaAppHal_XoOn(false);/* Init UART */phscaLinFlex_UartInit(PHSCA_LINFLEX_UART_BAUD_115200);

这两个从字面意思就可以看出,禁能XTAL_OUT和LINFLEX_UART的波特率是115200

4、

/*--- Init P13 (CS2_N) as GPIO ---*/u_port->ALTF_b.CS2_N = 0u; //CS2_N as GPIOu_port->DIR_b.CS2_N = 1u; //0:input 1:outputu_port->PUD_b.CS2_N_PU = 1u; //0:disabel 1:enableu_port->PUD_b.CS2_N_PD = 0u; //0:disabel 1:enableu_port->OUT_b.CS2_N = 1u; //ouput value

CS2_N就是P13脚的一个复用功能之一,这样就把P13配置为普通GPIO,输出模式,初始输出高电平
在这里插入图片描述
相关配置在文档Ranger-4 user manual里,注释是简写
在这里插入图片描述
这里提一下开发需要的文档如下
在这里插入图片描述

5、

	/*--- Init timer GPT0 ---*/uint32_t periodInUs = 500000u;u_timers->TIMERS_TIMER0_PRESCALER_REG_b.TIMER0_PRESCALING_VALUE = 1u; //定时器时钟预分频系数u_timers->TIMERS_MODE_REG = 0u; //0:single shot 1:free runningu_timers->TIMERS_INT_SET_ENABLE_REG = 1u; //0:no effect 1:enable INTu_timers->TIMERS_MODE_REG = 1u;

这里很奇怪的一点是TIMERS_MODE_REG 配置了两次,把u_timers->TIMERS_MODE_REG = 0u;注释掉也不影响。
同样相关配置在文档Ranger-4 user manual里
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、

uint32_t halfPeriod = periodInUs / 2000u; //250uint8_t preScaler = 1u;uint32_t sysCoreClock = phscaAppHal_GetSystemCoreClock() / 1000u; //55200uint32_t timerRegCount = halfPeriod * (sysCoreClock / preScaler); //13800000, 55200000 / 13800000 = 4,即1秒可以记4次,记一次需要250MS,即250MS进一次中断u_timers->TIMERS_TIMER0_TIMEOUT_REG = timerRegCount; //计数值

如果想要500MS,简单做法可以在让timerRegCount * 2

在这里插入图片描述
在这里插入图片描述

7、
NVIC_EnableIRQ(IRQ19_Timer0_IRQn);
定时器中断向量在startup_NCJ29D5_user.s里面可以看到

8、

__attribute__ ((interrupt ("IRQ")))
void IRQ19_Timer0(void)
{u_port->OUT_b.CS2_N = !u_port->OUT_b.CS2_N;u_timers->TIMERS_INT_CLR_STATUS_REG = 1u; //0:no effect 1:clear timer0 timeout interrupt
}

在这里插入图片描述

到此这个例程结束。

没找到相关文档前,看这些代码还是有点懵的,有文档后就清晰了。

全部代码

/*(c) NXP B.V. 2020. All rights reserved.Disclaimer1. The NXP Software/Source Code is provided to Licensee "AS IS" without anywarranties of any kind. NXP makes no warranties to Licensee and shall notindemnify Licensee or hold it harmless for any reason related to the NXPSoftware/Source Code or otherwise be liable to the NXP customer. The NXPcustomer acknowledges and agrees that the NXP Software/Source Code isprovided AS-IS and accepts all risks of utilizing the NXP Software underthe conditions set forth according to this disclaimer.2. NXP EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING,BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF INTELLECTUAL PROPERTYRIGHTS. NXP SHALL HAVE NO LIABILITY TO THE NXP CUSTOMER, OR ITSSUBSIDIARIES, AFFILIATES, OR ANY OTHER THIRD PARTY FOR ANY DAMAGES,INCLUDING WITHOUT LIMITATION, DAMAGES RESULTING OR ALLEGED TO HAVERESULTED FROM ANY DEFECT, ERROR OR OMISSION IN THE NXP SOFTWARE/SOURCECODE, THIRD PARTY APPLICATION SOFTWARE AND/OR DOCUMENTATION, OR AS ARESULT OF ANY INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHT OF ANYTHIRD PARTY. IN NO EVENT SHALL NXP BE LIABLE FOR ANY INCIDENTAL,INDIRECT, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL DAMAGES(INCLUDING LOST PROFITS) SUFFERED BY NXP CUSTOMER OR ITS SUBSIDIARIES,AFFILIATES, OR ANY OTHER THIRD PARTY ARISING OUT OF OR RELATED TO THE NXPSOFTWARE/SOURCE CODE EVEN IF NXP HAS BEEN ADVISED OF THE POSSIBILITY OFSUCH DAMAGES.3. NXP reserves the right to make changes to the NXP Software/Sourcecode anytime, also without informing customer.4. Licensee agrees to indemnify and hold harmless NXP and its affiliatedcompanies from and against any claims, suits, losses, damages,liabilities, costs and expenses (including reasonable attorney's fees)resulting from Licensee's and/or Licensee customer's/licensee's use of theNXP Software/Source Code.
*//*** @file* @brief NCJ29D5 Blinky LED App*/
#include <stdbool.h>
#include <stdint.h>// Include NCJ29D5_user.h (rename SPI controller's "EOF" field to "SPI_EOF" to avoid
// clash with EOF macro from stdio.h)
#define EOF SPI_EOF
#include <NCJ29D5_user.h>
#undef EOF#include <stdio.h>
#include <phIscaBaseband.h>
#include <phIscaUtilities.h>
#include <phIscaAppHal.h>
#include <phscaTools.h>
#include <phscaLinFlex.h>int main(void)
{//系统选择外部晶振,时钟频率为55.2MhzphscaAppHal_Init(PHSCA_APPHAL_XO_CLOCK_SOURCE_55P2Mhz);/* Stop Watchdog timer for debugging purpose */phscaUtilities_WdtResetWithMS(0u);/*--- Init baseband to enable the LDOs to power VDD_GLOB for LEDs ---*//** 55.2M+xoClkDivderSet:0+hwAcceleratorCfg:0(software encoder) -->rfpllRxTime:75  rfpllTxTime:180*/phIscaBaseband_Config_t gphscaRciAppConfig_Static ={.Control_b.xoClockSel = PHSCA_BB_XO_CLOCK_SOURCE_55P2Mhz, //55.2M.Control_b.xoClkDivderSet = 0u,.Control_b.hwAcceleratorCfg = 0u,};uint16_t rfpllRxTxTime[2] = {0u, 0u};/* Update rfpll tx and rx rampup time in RciConfiguration */phscaAppHal_GetRfpllRxTxRampupTime(gphscaRciAppConfig_Static.Control_b.hwAcceleratorCfg,gphscaRciAppConfig_Static.Control_b.xoClkDivderSet,&rfpllRxTxTime[0u], &rfpllRxTxTime[1u]);gphscaRciAppConfig_Static.Control_b.rfpllRxTime = rfpllRxTxTime[0u];gphscaRciAppConfig_Static.Control_b.rfpllTxTime = rfpllRxTxTime[1u];/* Init Baseband */phscaBaseband_Init(gphscaRciAppConfig_Static);/* Turn on crystal *//**When set to 1, the crystal oscillator is selected as input of the output buffer driving the XTAL_OUT pin.*If set to 0, the XTAL_OUT configuration is not altered*/phscaAppHal_XoOn(false);/* Init UART */phscaLinFlex_UartInit(PHSCA_LINFLEX_UART_BAUD_115200);printf("\r\n--- Blinky LED ---\n\r");/*--- Init P13 (CS2_N) as GPIO ---*/u_port->ALTF_b.CS2_N = 0u; //CS2_N as GPIOu_port->DIR_b.CS2_N = 1u; //0:input 1:outputu_port->PUD_b.CS2_N_PU = 1u; //0:disabel 1:enableu_port->PUD_b.CS2_N_PD = 0u; //0:disabel 1:enableu_port->OUT_b.CS2_N = 1u; //ouput value/*--- Init timer GPT0 ---*/uint32_t periodInUs = 500000u;u_timers->TIMERS_TIMER0_PRESCALER_REG_b.TIMER0_PRESCALING_VALUE = 1u; //定时器时钟预分频系数//u_timers->TIMERS_MODE_REG = 0u; //0:single shot 1:free runningu_timers->TIMERS_INT_SET_ENABLE_REG = 1u; //0:no effect 1:enable INTu_timers->TIMERS_MODE_REG = 1u;uint32_t halfPeriod = periodInUs / 2000u; //250uint8_t preScaler = 1u;uint32_t sysCoreClock = phscaAppHal_GetSystemCoreClock() / 1000u; //55200uint32_t timerRegCount = halfPeriod * (sysCoreClock / preScaler); //13800000, 55200000 / 13800000 = 4,即1秒可以记4次,记一次需要250MS,即250MS进一次中断u_timers->TIMERS_TIMER0_TIMEOUT_REG = timerRegCount; //计数值printf("Timer Reg Counter = %i\n\r",timerRegCount);NVIC_EnableIRQ(IRQ19_Timer0_IRQn);while(1){}
}__attribute__ ((interrupt ("IRQ")))
void IRQ19_Timer0(void)
{u_port->OUT_b.CS2_N = !u_port->OUT_b.CS2_N;u_timers->TIMERS_INT_CLR_STATUS_REG = 1u; //0:no effect 1:clear timer0 timeout interrupt
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强肝保肝养肝4大食物

“强肝的食物,保肝的食物有哪些,养肝的食物有哪些”如果您对这些食物不了解不明白。那就看看专家为您推荐的四款强肝保肝养肝的食物。荔枝&#xff08;供图/华盖&#xff09;一、是荔枝&#xff0c;荔枝可以保肝&#xff0c;对肝有好处根据《本草纲目》记载荔枝有强肝健胰的效果…

如何查看注解实现_该怎么运用注解呢?Java团队元老有话说

来源 | 异步 15讲能学好诞生24年的JAVA吗&#xff1f;你当然会感到怀疑&#xff0c;众所周知&#xff0c;在技术向的IT论坛上&#xff0c;“如何在十天之内快速掌握好Java&#xff1f;”这类问题&#xff0c;往往会招来嘲笑。来源于知乎但在当下&#xff0c;5分钟能看完一部电影…

NXP S32K144开发(一)环境搭建和新建工程

1、首先需要安装S32 Design Studio for ARM&#xff0c;在NXP官网可以搜索到&#xff0c;这玩意也是基于eclipse的 安装好后就可以打开了。 2、新建工程 过程可以参考NXP官网&#xff1a; https://www.nxp.com/document/guide/get-started-with-the-s32k144evb:NGS-S32K144E…

首先记录异常的根本原因

Logback日志库的0.9.30版本带来了一个很棒的新功能&#xff1a;从根&#xff08;最内部&#xff09;异常而不是最外部异常开始记录堆栈跟踪。 当然&#xff0c;我的兴奋与我贡献了此功能无关。 用塞西尔德米勒&#xff08;Cecil B. de Mille&#xff09; 的话来解释&#xff1a…

Android 中的 Service 全面总结

1、Service的种类 按运行地点分类&#xff1a; 类别区别 优点缺点 应用本地服务&#xff08;Local&#xff09;该服务依附在主进程上&#xff0c; 服务依附在主进程上而不是独立的进程&#xff0c;这样在一定程度上节约了资源&#xff0c;另外Local服务因为是在同一进程因此不…

找出互联网类似以下图的实例

转载于:https://www.cnblogs.com/sghcjy/p/4978851.html

使用Spring MVC开发Restful Web服务

REST简介 摘自Wikipedia&#xff1a; REST风格的体系结构由客户端和服务器组成。 客户端向服务器发起请求&#xff1b; 服务器处理请求并返回适当的响应。 请求和响应围绕资源表示的传递而构建。 资源本质上可以是可以解决的任何连贯且有意义的概念。 正如您所阅读的&#xff0…

端到端测试的滥用–测试技术2

我的上一个博客是有关测试代码方法的一系列博客中的第一篇&#xff0c;概述了使用一种非常常见的模式从数据库检索地址的简单方案&#xff1a; …并描述了一种非常通用的测试技术&#xff1a; 不编写测试 &#xff0c; 而是手动进行所有操作。 今天的博客涵盖了另一种实践&…

那些年困扰我们的Linux 的蠕虫、病毒和木马

虽然针对Linux的恶意软件并不像针对Windows乃至OS X那样普遍&#xff0c;但是近些年来&#xff0c;Linux面临的安全威胁却变得越来越多、越来越严重。个中原因包括&#xff0c;手机爆炸性的普及意味着基于Linux的安卓成为恶意黑 客最具吸引力的目标之一&#xff0c;以及使用Lin…

(转)FPGA异步时序和多时钟模块

http://bbs.ednchina.com/BLOG_ARTICLE_3019907.HTM 第六章 时钟域 有一个有趣的现象&#xff0c;众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域。换句话说&#xff0c;只有一个独立的网络可以驱动一个设计中所有触发器的时钟端口。虽然…

怎么检测不到我的音频_Linux 上的最佳音频编辑工具推荐 | Linux 中国

在 Linux 上&#xff0c;有很多种音频编辑器可供你选用。不论你是一个专业的音乐制作人&#xff0c;还是只想学学怎么做出超棒的音乐的爱好者&#xff0c;这些强大的音频编辑器都是很有用的工具。-- Ankush Das(作者)在 Linux 上&#xff0c;有很多种音频编辑器可供你选用。不论…

具有GlassFish和一致性的高性能JPA –第3部分

在我的四部分系列的第三部分中&#xff0c;我将解释将Coherence与EclipseLink和GlassFish结合使用的第二种策略。 这就是通过EclipseLink使用Coherence作为二级缓存&#xff08;L2&#xff09;的全部内容。 一般的做法 这种方法将Coherence数据网格应用于依赖于无法完全预加载到…

精选30道Java笔试题解答(转)

都是一些非常非常基础的题&#xff0c;是我最近参加各大IT公司笔试后靠记忆记下来的&#xff0c;经过整理献给与我一样参加各大IT校园招聘的同学们&#xff0c;纯考Java基础功底&#xff0c; 老手们就不用进来了&#xff0c;免得笑话我们这些未出校门的孩纸们&#xff0c;但是I…

list取值_Redis中List及quicklist实现-2

上一篇中看了List的使用方式、quicklist中的各个结构体&#xff0c;这一篇来看看quicklist里面的几个核心函数&#xff0c;quicklistCreate函数、quicklistCreateNode函数、quicklistPush函数、quicklistPop函数。接下来我们通过源码看一下quicklist中是如何借鉴STL中deque的这…

通过示例休眠–第1部分(删除孤儿)

所以我想做一系列的冬眠例子&#xff0c;展示冬眠的各种特征。 在第一部分中&#xff0c;我想展示有关删除孤儿功能及其在故事情节中的使用方法。 因此&#xff0c;让我们开始:) 先决条件 &#xff1a; 为了尝试以下示例&#xff0c;您将需要以下提到的JAR文件&#xff1a; …

Win10手记-IIS部署网站问题解决

最近在自己的Win10电脑上尝试部署ASP.NET网站时出现了问题&#xff0c;经过多方查找定位到IIS为问题来源。 开始之前 先描述下技术环境&#xff1a; 1.Windows 10 PC 2.Windows 自带的IIS 7 3.ASP.NET Web API项目网站 4.VS 2015 问题描述 首先我们为PC安装IIS&#xff0c;按照…

CentOS 7 安装记录

由于centos6.4版本有点老&#xff0c;所以换到centos7。 1.安装 CentOS 7.0系统安装配置图解教程 2.linux设置网卡开机启动 实质linux是看一个网卡文件的配置&#xff0c;就是/etc/sysconfig/network-scripts/ifcfg-eth0 (这个文件名看你网卡名称而异&#xff0c;具体你到该目录…

通知栏发送消息Notification(可以使用自定义的布局)

一个简单的应用场景&#xff1a;假如用户打开Activity以后&#xff0c;按Home键&#xff0c;此时Activity 进入-> onPause() -> onStop() 不可见。代码在此时机发送一个Notification到通知栏。当用户点击通知栏的Notification后&#xff0c;又重新onRestart() -> onSt…

退出页面删除cookie_Cookie 机制

欢迎关注公众号 学习资料不会少01「HTTP 协议是无状态的」对于浏览器的每一次请求&#xff0c;服务器都会独立处理&#xff0c;不与之前或之后的请求发生关联。这个过程如图 11-1 所示&#xff0c;3次“请求&#xff0f;响应”之间没有任何关系。即使是同一个浏览器发送了3个请…

Oracle WebLogic Java云服务–幕后花絮。

在开放世界方面&#xff0c;发生的一件大事可能是出乎意料的消息&#xff0c;那就是Oracle最终支持云计算发展并提供自己的公共云服务 。 除了官方公告之外&#xff0c;Aquarium上&#xff08; 此处和此处 &#xff09;的内容或多或少都没有多少内容&#xff0c;您找不到很多信…