当前位置: 首页 > news >正文

什么网站ppt做的最好看百度收录提交申请

什么网站ppt做的最好看,百度收录提交申请,高淳哪家做网站不错,wordpress灯箱效果文章目录 1. 前言2. 评估板简介3. 官方驱动3.1 官网驱动的介绍3.2 官方驱动的移植3.3 官方驱动的使用 4. 参考资料 1. 前言 本篇文章是TLD7002学习笔记的第二篇,主要是介绍如何使用S32K144驱动TLD7002-16ES。为此,笔者做了一套基于TLD7002-16ES的评估板…

文章目录

    • 1. 前言
    • 2. 评估板简介
    • 3. 官方驱动
      • 3.1 官网驱动的介绍
      • 3.2 官方驱动的移植
      • 3.3 官方驱动的使用
    • 4. 参考资料

1. 前言

本篇文章是TLD7002学习笔记的第二篇,主要是介绍如何使用S32K144驱动TLD7002-16ES。为此,笔者做了一套基于TLD7002-16ES的评估板,用于调试和评估TLD7002-16ES。

2. 评估板简介

整个评估板的框图如下所示:

评估板框图

控制板主要由MCU、CAN收发器、DCDC和LDO组成:

  • MCU选用了笔者熟悉的S32K144,方便进行软件调试
  • MCU加上CAN收发器用于和TLD7002进行HSLI通信(也是一种uart over can的通信)
  • LDO用于给MCU和CAN收发器供电
  • DCDC用于给灯板供7V电

灯板主要由TLD7002-16ES和LED灯珠组成:

  • VS用于整体芯片供电,供电范围为6-20V,该板12V供电
  • VLED用于LED灯珠的阳极供电,供电范围为2-20V,该板使用7V供电
  • HSLI用于和控制板之间的通信
  • 同时还预留了GPIN0用于烧录芯片时使用,框图未标出

3. 官方驱动

3.1 官网驱动的介绍

驱动下载地址:

  • TLD7002-16ES Device Driver - Infineon Developer Center

下载之后获取的是一个压缩包,解压之后的文件目录如下:

驱动文件目录

这三个文件夹,有用的是src文件夹;templates文件夹因为里面的例程是基于Arduino平台,对直接使用单片机的参考意义不大;因为源文件每个函数都有详细的注释,所以documents里面的文件也用不上。

打开src文件夹,所有的文件如下:

驱动源文件

对应的TLD7002-16ES的驱动架构如下:

驱动文件及架构

  • TLD7002_Definition.h 里面都是关于寄存器的详细定义
  • TLD7002.h 里面是其他层需要用到(如帧结构)的结构体等变量的定义
  • TLD7002_ControlLayer.c/TLD7002_ControlLayer.h 主要是准备帧的组成元素,如CRC校验,滚动码,负载处理等。
  • TLD7002_ControlLayer.c/TLD7002_ControlLayer.h 实现各种帧的收发函数,提供API给外部调用,主要的API如下:

服务层API

3.2 官方驱动的移植

官方驱动实现的功能上文已经介绍,细心的读者肯定会有疑问,为啥没有看到UART收发功能在某个文件实现?

其实官方驱动里确实没有具体实现UART收发功能,但是在TLD7002_ControlLayer.h文件里提供了一个结构体类型,里面包含了待用户实现UART收发功能的函数指针,如下图所示:

TLD7002_NetworkInstance

下面以S32K144驱动TLD7002-16ES为例介绍下完整的移植过程。

  1. 新建S32K144工程,并将TLD7002-16ES的驱动文件包含进去,新增TLD7002_HAL.c/TLD7002_HAL.h文件用于实现UART的收发功能等,新增types.h文件用于实现驱动文件里面的数据类型和S32K1的SDK数据类型兼容。如下图所示:

工程结构

  1. types.h实现数据类型兼容:
#include "stdbool.h"
#include "stdint.h"#define TRUE true
#define FALSE falsetypedef uint8_t uint8;
typedef uint16_t uint16;
typedef uint32_t uint32;
typedef bool boolean;
  1. 新增串口组件进行配置,同时在pin_mux组件配置对应的引脚

UART引脚配置

UART外设配置

  1. 基接下来需要在TLD7002_HAL.c/TLD7002_HAL.h实现串口收发,整个的流程图如下:

UART收发流程图

  1. TLD7002_HAL.C中实现UART发送函数,因为CAN收发器具有回环功能,TX发出去的数据在RX也能收到,为了接收完整的数据,所以需要提前调用LPUART_DRV_ReceiveData函数使能接收。实现函数如下所示:

UART发送函数

  1. 然后实现UART接收函数,同时需要和UART中断函数进行配合,如下所示:

UART接收函数

UART中断函数

  1. 使用广播地址的情况下TLD7002不会回复数据,但是MCU的RX因为CAN收发器的原因仍然会收到自身发的数据,所以需要在接收完数据后进行计数器的复位同时丢弃这部分数据。针对广播地址的情况,也准备了单独的串口接收函数。

广播模式下的UART接收函数

  1. 接着定义一个结构体,包含这些函数的指针,方便其它函数调用

TLD7002_Network

generateStartSyncBreakgenerateStopSyncBreak两个函数的作用是结合使用产生一段时间的低电平,从而复位TLD7002-16ES。在使用TLD7002-16ES过程中基本用不到(使用进入init模式的帧命令更多),所以这里就不去实现了。

  1. 最后在TLD7002_HAL.h文件里增加这些函数的声明。
#if (INST_LPUART_TLD7002==0U)#define LPUART_TLD7002 LPUART0
#elif (INST_LPUART_TLD7002==1U)#define LPUART_TLD7002 LPUART1
#else#define LPUART_TLD7002 LPUART2
#endifextern TLD7002_NetworkInstance_t TLD7002Network;void sendTLD7002Message(uint8 *txBuffer, uint32 len_write);
boolean readReceivedTLD7002Answer(uint8* read_dest, uint32 len_read);
void emptyingReceiveBuffer(void);
void generateStartSyncBreak(void);
void generateStopSyncBreak(void);
void Lpuart_tld7002_RxCallback(void *driverState, uart_event_t event, void *userData);

3.3 官方驱动的使用

官方驱动移植好之后,就可以在用户程序中进行调用了。笔者基于自己的做的DEMO实现了呼吸和流水转向功能。

mian函数的代码如下:

main函数

其中,

  • 关于TLD7002_Init()函数的实现如下:

TLD7002_Init()函数

  • TLD7002初始化步骤参考的软件使用手册中的流程图如下:

TLD7002-16ES初始化流程图

  • 关于Led_Breath()Led_TurnWater()函数,主要就是调用更新占空比的帧命令,由于比较简单并且代码较多,这里就只展示下Led_TurnWater()

Led_TurnWater()函数

  • TLD7002实现动画效果参考的软件使用手册中的流程图如下:

TLD7002-16ES更新动画流程

另外,如果想要知道MCU给TLD7002-16ES发完数据之后,TLD7002-16ES的状态,可以参考如下代码实现:

reponse_val_TLD7002 = TLD7002_RX_DC_UPDATE_14BIT_FRAME(&TLD7002Network, &dcupd14bit_TLD7002);switch(reponse_val_TLD7002)
{ /*< check status of answer */case TLD7002_FRAME_VAL_NO_ERROR: /*< do something */break;case TLD7002_FRAME_VAL_UNDEFINED_ERROR: /*< do something */break;case TLD7002_FRAME_VAL_COPY_FRAME_ERROR: /*< do something */break;case TLD7002_FRAME_VAL_BROADCAST_ERROR: /*< do something */break;case TLD7002_FRAME_VAL_CRC3_ERROR: /*< do something */break;case TLD7002_FRAME_VAL_RC_ERROR: /*< do something */break;}

笔者在调试时遇到的注意事项也简单分享下:

  • 没有进行过OTP烧录的TLD7002-16ES是无法进入active mode,也即没法正常工作。推荐将所有OTP寄存器烧录完成后再使用MCU进行控制。
  • OTP寄存器没有完全烧录的芯片只能接收到广播地址和0x01。OTP区域的CRC寄存器的值一定要写对,否则该器件只能接收到广播地址。
  • 只调用DC_UPDATE命令是不会更改TLD7002的占空比的,只有调用了DC_SYNC命令之后,TLD7002-16es才会在下一个PWM周期开始时更改占空比。
  • 如果需要短时间内频繁使用DC_UPDATE命令,如实现灯的呼吸,建议使用器件地址,不要使用广播地址。否则TLD7002-16ES会进入fail-safe模式。

TLD7002-16ES的软件驱动部分就介绍到这里了。因为Infenion官方提供的驱动比较完善,所以用户在芯片驱动层不需要花太多时间,只需要专注应用层即可。如果有读者想要对TLD7002-16ES的软件驱动做更多的了解,建议深入阅读官方提供的驱动源码。

4. 参考资料

  • TLD7002-16LITE_KIT User Guide

  • TLD7002-16ES software design and device driver

http://www.shuangfujiaoyu.com/news/30329.html

相关文章:

  • 给网站平台做推广叫什么百度指数1000搜索量有多少
  • 网站seo诊断优化分析该怎么做成都关键词排名推广
  • aqqqcom查询佛山seo整站优化
  • 中山网站制作设计怎么注册一个网站
  • 银川网站制作seo优化 搜 盈seo公司
  • b2b网站怎么注册百度一下百度主页度
  • 上海企业网站模板建站河北网站建设制作
  • 网站开发建设是否需要经营许可民生热点新闻
  • 网站关键词排名很好的原因优化措施最新回应
  • 建网站需要营业执照吗一键seo提交收录
  • 株洲网站建设百度投诉平台在哪里投诉
  • 动态网站开发与全程实例株洲专业seo优化
  • 教育行业网站建设审批谷歌搜索引擎网址
  • 济南模板网站制作没经验可以做电商运营吗
  • 网站建设与推广协议网站免费seo
  • 中装建设集团网站杭州做seo的公司
  • 如何做网站渗透测试厦门seo公司到1火星
  • 网站开发的人怎么样谷歌海外推广怎么做
  • 软件开发和网站开发微信seo是什么意思
  • 域名空间做网站百度邮箱注册入口
  • 做网店装修的网站有哪些市场营销产品推广策划方案
  • java负责前端网站开发网络推广代理平台
  • 做网站优化企业百度竞价排名医院事件
  • 橙子建站官网联系电话武汉百度seo网站优化
  • 做网站编辑工作累吗windows优化大师的作用
  • 吕梁网站制作吕梁安全关键词生成器
  • 中小学学校网站建设百度手机助手官网下载
  • 网站建设迅雷青岛网站建设推广公司
  • 鲜花网站建设主要内容23岁老牌网站
  • 做海外网站交税吗seo顾问张智伟