安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > 山外KEA编程下载助手 v1.0 绿色版
山外KEA编程下载助手

山外KEA编程下载助手

 v1.0 绿色版
  • 软件大小:10.57 MB
  • 更新日期:2019-06-26 17:42
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:10.57 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  山外KEA编程下载助手是一款简单易用,功能强大的KEA编程下载工具,库代码提供的函数日益繁多,新同学刚接触山外库,一定对库感到陌生,而KEA编程助手,通过书签的导向方式,快速阅读例程,对比各功能要点,大大加快同学们学习的进度;而且往后的开发中,忘了函数的使用方法,也可以快速通过编程助手来查找;山外库单片机各模块外设的端口配置都有统一固定的地方,和K60不同的地方是,KEA的UART、SPI、I2C的端口,都不能像K60那样随意搭配的,而是绑定不同的方案。强大又实用,需要的用户可以下载体验

山外KEA编程下载助手

软件功能

  1.支持按键解锁功能。

  飞思卡尔的芯片,下载错误的固件,或者超频过高,跑飞,都容易出现锁死。按键解锁功能,可以突破这个缺点。

  2.支持串口下载,包括蓝牙串口无线下载

  在波特率 256000的情况下,18.4K的固件,仅需2.6秒下载完成。

  波特率自动识别,支持 256000、115200、57600、38400、9600,共计5种波特率方案。满足不同串口模块的高中低速度要求。

  3.集成12号、16号英文字库,无需APP加载。

  节省APP的体积。

  4.集成printf和sprintf函数,支持浮点数打印!

  IAR自带的函数有bug,打印浮点数异常的。

  5.带NRF无线传输接口

  可以和K60/K66无线调试器,无线传输数据。(蓝牙简单易用,但速度慢,丢数据严重。NRF速度快,但程序上用起来复杂一些。)

软件特色

  1.采用高精度有源晶振,成本是普通晶振的10倍价格

  有网友说,KEA的串口,高波特率下容易出现误码。

  误码的原因是波特率不匹配,导致采样有误。高精度有源晶振,不管是抗干扰,还是精度上,都更胜一筹。

  实例证明,串口下载固件,波特率256000的情况下,依旧无误码高速大量传输

  2.板子排针两边分布,用户走线更容易

  支持插入到洞洞板。排针仅仅用两边,主板PCB走线容易。

  3.四颗蓝色LED灯分布四周,小车远处调试,可容易判断哪个LED灯闪烁异常。

安装说明

  1、需要的用户可以点击本网站提供的下载地址下载得到对应的程序数据包

山外KEA编程下载助手

  2、解压后,即可将应用程序数据包打开

山外KEA编程下载助手

  3、双击应用程序即可打开应用程序,进入程序主界面

山外KEA编程下载助手

使用说明

  超配配置参数,在工程目录\App\Inc\MKEA128_conf.h里:

  #define BUS_ISDIV 1 // bus是否从CORE二分频,1为分频,0为不分频

  #define TIMER_ISDIV 1 // timer是否从CORE二分频,1为分频,0为不分频

  上面配置的意思是:

  CORE内核频率可配置为 20、40、80M 。(上方配置为40M)

  而BUS时钟、TIMER时钟。是从CORE内核时钟分频得来。可不分配,或者二分频。

  上方配置为BUS时钟、TIMER时钟都从CORE里二分频。

  配置好后,我们可以通过读取这4个变量,知道单片机的时钟频率:

  例程知识要点

  在App\Inc\MKEA128_it.h 配置中断函数入口。

  例如上述例程,配置为:

  #define PIT_CH0_IRQHandler pit0_irq

  此后,触发PIT通道0中断时,就会执行pit0_irq。

  调用enable_irq使能该中断。

  enable_irq(PIT_CH0_IRQn); // 使能PIT_CH0中断

  出于节省功耗的原因,芯片的外设中断默认都是关闭的,需要调用该函数来开启中断。

  换句话说,中断信号来了,如果没使能中断(允许触发中断),那么指定的函数是不会执行的。只能使能后,才会执行。

  留意一下:

  enable_irq 形参的后缀是_IRQn 。还有一种参数的后缀是_VECTORn ,这里没用到,但记得别搞混。

  3.全部模块初始化完成后,需要开启总中断:

  EnableInterrupts; //开总中断(凡是用到中断的,都需要的)

  enable_irq 相当于家里电器的开关。EnableInterrupts相当于家里电源总开关。两者都同时开了,电器才能打开。

  中断函数,可在App\MKEA128_it.c 里完成。也可在其他C文件里完成。

  上方仅仅以PIT_CH0中断为例,如果需要其他中断,可看App\Inc\MKEA128_it.h里的模版。

  //需要用到哪个中断,就定义哪个即可。下方有参考的模版

  举个例子:

  UART0 可配置UART0_RX_B0_TX_B1 和UART0_RX_A2_TX_A3 两种不同的方案。但不能RX用B0,TX却用A3。

  在工程目录\ App\Inc\ PORT_cfg.h里配置:

  用到哪个模块引脚,就从可选列表里选其中一个即可。

  串口发送,我们一般使用printf函数。

  printf函数的端口配置在工程目录\ App\Inc\ MKEA128_conf.h里配置:

  而UART0用到的具体IO引脚,可在工程目录\ App\Inc\ PORT_cfg.h里配置:

  上述的代码,配置UART0的RX引脚为PTA2,TX引脚为PTA3。

  printf函数是FWD提供的函数,最终会调用在工程目录\ App\ MKEA128_conf.c的enter_fputc函数完成真正的发送:

  可以看到,串口发送函数,需要传递开头配置的VCAN_PORT参数。

  注意一点:

  串口通信是交叉接线的。A的TX引脚,需要接B的RX引脚。

  山外库,底层支持切换选择不同的山外液晶型号。底层的液晶切换,不影响上层的API函数的调用,这样可以大大减少我们的程序改动。

  如果液晶型号的分辨率不同,那么需要自行处理不同分辨率的显示位置。

  在工程目录\ App\Inc\ MKEA128_conf.h里配置:

  最后一行USE_LCD 就是最终判断选择哪款液晶。这里选择的是山外ST7735S 1.44寸小液晶。

  液晶的引脚改动方法

  1.44寸的小液晶,由于尺寸小,适合在小车上使用。总线是IO模拟的,改动IO方便很多。改动的方法如下:

  (以ST7735S为例,ST7735R也是同理的)

  在工程目录\Board\inc\ VCAN_LCD_ST7735S.h里:

  前面部分,很好理解的。后面部分,是8位IO的数据输入、输出、输入输出方向控制的问题。

  LCD_ST7735S_P0 就是8位数据的输出。这里配置为PTG_OUT ,就是PTG,即PTG0~7这8位IO。

  LCD_ST7735S_PDDR_OUT()是配置8位数据的方向为输出,PTG_DDR ,表示PTG0~7方向。

  LCD_ST7735S_SPIN表示数据口的最低位引脚。PTG模块,最低位自然是PTG0。

  8位数据,必须连续,地址对齐,否则改动的难度非常大!

  山外KEA板子,自带12和16号英文字体。

  可在Board\inc\VCAN_LCD.h 里定义:

  配置后,此后调用LCD的函数进行英文字符显示,数字显示,都根据字体配置大小来显示。

  山外例程,经常使用到DELAY、DELAY_MS等延时函数。具体这些函数是由哪些模块实现的延时,山外的配置文件有选择的。

  在工程目录\ App\Inc\ MKEA128_conf.h里配置:

  #if ,是宏条件选择,表示是否编译范围内的代码。

  #elif,等效于普通代码的 else if ,作用同上。

  #endif,表示结束宏条件区域。

  0是假,表示条件不成立。1是真,表示条件成立。

  上方的代码,前2个条件都为假,即选择最后一个结果。真正等效于:

  换句话说,使用软件延时来作为延时函数。软件延时,误差较大的。如果需要精准延时,请配置硬件模块的延时。

  例如配置滴答定时器SYSTICK来作为延时

  优先级设置函数:

  void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)

  KEA128的priority范围为0 ~ 3, prio越低,则优先级越高 (2bit)

  使能中断函数:

  void NVIC_EnableIRQ(IRQn_Type IRQn)

  不过,通常我们会使用enable_irq 来代替NVIC_EnableIRQ,这样更容易通俗易懂。

  NVIC_SetPriority(PIT_CH0_IRQn,2); //PIT通道0的优先级为2

  拓展阅读:

  Coertx-M4系列中断嵌套、优先级说明(新增M0+系列说明) - 智能车资料区 – 山外论坛 http://vcan123.com/forum.php?mod=viewthread&tid=959&ctid=1

  IRQn_Type 在Chip\inc\ common.h里定义:

  本文讲解的内容比较深奥,新人初步了解即可,不影响平时使用。

  分块架构

  山外KEA是分块架构:

  区间范围大小数据内容

  0~16K16K系统分区(集成FWD)

  16k~128K112KAPP用户数据

  其中,系统分区是被保护的,用户自行编写的程序是改写不了这部分数据的。

  系统分区,集成一键解锁、串口下载、英文12、16号字体、支持浮点数的printf等功能。

  系统分区,最大的功能是可以保护板子以免锁死。如果用户程序执行错乱,进入串口下载模式,会重置数据,从而避免芯片锁死。

  为何会锁死?可看我们这帖子:

  老生常谈的问题:烧录错误的软件,会锁死芯片吗?

  http://www.vcan123.com/forum.php?mod=viewthread&tid=18278

  使用山外KEA版核心板,不要用Jlink去解锁,不然会触发升级功能,反而解除了保护。

  板子本身有抵抗由于跑飞或者下载异常而导致锁死的功能,不会锁死的。反而用jlink去解除保护,反而容易导致锁死。

  FWD的理解

  等效关系单片机Window电脑系统

  可执行文件APP(BIN)EXE

  外部库FWDDLL

  FWD就像window的DLL文件,而我们编写的APP(bin)文件,就像是电脑的EXE可执行文件。

  山外库,部分代码是直接写入到FWD文件里,通过工程目录\ App\ enter.h文件声明的接口来调用。此后,如果更新库,我们只需要重新烧录FWD文件,替换enter.h文件即可,无需整个工程重新移植。

  以山外上位机为例:

  等效关系单片机山外上位机

  可执行文件APP1(BIN)山外多功能调试助手.exe

  APP2(BIN)山外字库菜单助手.exe

  在一个单片机里,可以有多个APP,也可以有多个FWD。一个APP可调用多个FWD的函数,同样,多个APP也可以调用同一个FWD的函数。

  共享的FWD,可以大大减少APP的体积,为我们编写多个APP提供了方便。同时,库更新,只需要重新烧录FWD即可,无需改动APP代码。

  FWD的函数接口

  关于FWD的函数接口,在工程目录\ App\enter.h里定义:

  由于定义是通过宏定义来完成的,源代码一般都比较难懂,山外已经把这部分的内容在结构体的注释里整理好。

  看enter.h里的mydata_in_t 定义。

  void *spi_init; //uint32_t spi_init (SPIn_e, PTXn_e pcs, SPI_CFG,uint32 baud,uint32 bus_khz,char use_pin_mode); //SPI初始化,选择片选信号,设置模式,波特率 (目前仅支持主机模式)

  void *spi_set_baud; //uint32_t spi_set_baud (SPIn_e, uint32 baud,uint32 bus_khz);

  void *spi_mosi; //void spi_mosi (SPIn_e, PTXn_e pcs, uint8 *modata, uint8 *midata, uint32 len); //SPI发送接收函数,发送databuff数据,并把接收到的数据存放在databuff里(注意,会覆盖原来的databuff)

  void *spi_mosi_cmd; //void spi_mosi_cmd (SPIn_e, PTXn_e pcs, uint8 *mocmd , uint8 *micmd , uint8 *modata, uint8 *midata, uint32 cmdlen , uint32 len); //SPI发送接收函数,与spi_mosi相比,多了先发送cmd 缓冲区的步骤,即分开两部分发送

  //KBI 按键中断

  void *kbi_init; //void kbi_init (PTXn_e ch, uint8_t cfg); //ch为PTA0~D7时,为KBI0模块,PTE0~H7时,为KBI1模块。同一个模块,必须要相同的配置触发方式。多个时,推荐用 kbi_allinit。

  void *irq_init; //void irq_init (PTXn_e, uint8_t cfg); //引脚为 PTI0~I6 (原本有A5,但为复位口,不能用)。同一时间,只能配置一个,不能多个同时用。

  //FTM 定时中断(估计不会有人这样用,浪费FTM)

  void *ftm_timing_init; //void ftm_timing_init(FTMn_e ftmn,uint16_t counttime,FTM_PS_e ps); //以timer_clk周期计时的定时中断函数

  //FTM 脉冲中断(较少用,一般常用的是定时测量脉冲数)

  void *ftm_pulsing_init; //void ftm_pulsing_init(FTMn_e ftmn,uint16_t counttime,FTM_PS_e ps,PTXn_e tclk_ptxn); //以脉冲数计数的定脉冲数中断函数

  //执行新APP API接口 (和普通的 函数调用不同,下面的函数都重置栈地址)

  void *jmp_app; //void jmp_app (uint32_t sp, uint32_t pc); //跳转到新的APP

  void *jmp_bin; //void jmp_bin (uint32_t addr); //跳转到新的APP BIN文件 (bin文件的第1个32位数据是栈地址,第2个32位数据是启动函数入口)

  山外KEA板子,支持串口下载和DAP/Jlink下载器下载两种方式。下载器下载方法,和K60单片机相同,本文仅介绍串口下载。

  串口下载,需要使用我们配套的KEA串口下载工具,把串口引脚接入核心板的UART0的A2/A3接口。波特率可选256000、115200、57600、38400、9600,共计5种波特率方案。

  如果使用我们的DAP仿真器,集成串口功能,可直接10pin线接过去。

  进入串口下载模式的具体步骤:

  1.核心板接好串口线。

  2.长按山外KEA核心板的独立按键(KEY),不要放手。按一下复位键就放手。

  3.等核心板LED0闪烁,就可以放开独立按键。

  4.使用山外KEA串口下载软件,选择需要下载的固件,然后点击<下载更新>按钮。右边文本框提示完成情况。

  小车上无线串口下载的步骤:

  蓝牙如何配置串口通信,请自行问蓝牙卖家,不同蓝牙,配置方法不同。

  1.把PTE4引脚,接GND。按一下复位键,进入串口下载模式。

  2.上位机下载固件,并执行新APP。

  3.若需要重新下载新的APP,需要自行APP里写串口控制代码,调用NVIC_SystemReset()函数来完成复位,重新进入串口下载模式。

  4.若不需要重新下载,仅仅是复位,直接上位机里点击<执行APP>按钮。

人气软件