alan000345

  • 2019-06-17
  • 回复了主题帖: 探秘DLP® NIRscan™ Nano评估模块

    好东西啦。

  • 回复了主题帖: 这里有解决踏板动力更长续航时间方案

    不错的分享,一定要顶一下的。

  • 回复了主题帖: 简化HEV 48-V系统的隔离CAN、电源接口

    不错的分享,混合动力车比较复杂的。

  • 回复了主题帖: JD642 SDRAM总线匹配预仿真及pcb下载

    真心好资料分享。

  • 2019-06-13
  • 回复了主题帖: 分享一个IAR for MSP430 6.3的破解程序和方法~~~~~

    真心好分享。

  • 回复了主题帖: 变量偶尔会出现一个很大的值

    peak的意思不就是最大值得意思吗?你程序里怎么编的啊。是不是就是找最大值的程序呢?没最大值可能就不正确啦。

  • 回复了主题帖: MSP430G2755 Main Bootloader UART 移植指导

    人去搂空 发表于 2019-6-13 11:30 谢谢分享!
    不客气啦。

  • 2019-06-12
  • 回复了主题帖: 60W 无传感器 BLDC 电机驱动器参考设计

    谢谢,分享 

  • 回复了主题帖: MS430G2755有关MSPBoot的代码移植流程

    好东西,谢谢,分享。

  • 回复了主题帖: 如何进行产品的标准ZigBee测试认证

    真心好分享

  • 发表了主题帖: MSP430G2755 Main Bootloader UART 移植指导

    作者:Terry Han 摘要 TI 的MSP430支持在主程序中加载Bootloader的方式进行在线升级操作,通过在线升级功能,客户可以通过外部处理器随时更新MSP430内部的程序及Bug 的远程修复。同时TI也提供了基于MSP430G2553的参考代码,本文详细的介绍了如何将MSP430G2553的Bootloader移植到MSP430G2755中,使用MSP 430G2553 Host对MSP430G2755 Device进行的升级操作。 本文基于MS430G2755为目标升级对象,详细讲述BootLoader的使用方法,并给出了具体的移植步骤。 Figure1为MSPBoot软件框架,本文的分析都是基于这个典型软件框架。 Figure1. MSPBoot软件框架路 1. MSP430 Main Memory Bootloader 介绍 在MSP430G2xx 中实际上具有一个ROM版本的BSL(Bootloader) ,但是这个BSL仅仅支持外部MCU通过UART进行在线升级,而且而且所有的协议全部固化,无法进行修改或者更改其他接口方式进行升级操作。所以这个需要一个可以在主程序中运行的Bootloader,可以让外部MCU进行用户自定义的升级操作。同时TI也提供了一个基于MSP430G2553的参考例程,可以通过如下链接进行下载。http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPBoot/latest/index_FDS.html 本文使用的参考代码版本为MSPBoot_1_01_00_00。 2.MSPBoot的代码移植流程 2.1 MS430G2755 CMD 文件的产生 首先用Per工具产生CMD文件(Generating Linker Files), 通过Per的工具会产生两个CMD文件,其中一个给MSP430G2755的Bootloader使用,另一个给MSP430G2755的应用程序使用。操作指令如下:  这里面有几个重要的参数说明如下,  <0x8000 > = Start address of Flash/FRAM  对于MSP430G2553 地址为0xC000 , 而MSP430G2755的地址需要修改为0x8000  <0xFFE0 > = Address of interrupt vector table  中断向量表的地址0xFFE0, 对于MSP430G2553和MSP430G2755相同  <0xFC00> = Start address of Bootloader  Bootloader的起始地址0xFC00,对于两者也是相同的  <48 > =Size of the proxy table  这里的48对应于12个中断向量,每个中断向量占用4Byte  <6> = Size of shared vectors  在应用程序中一共有3个(P1/Time/Dummy)中断向量,每个中断向量占用2Byte, 对应参数为6  <0x1100> = Start address of RAM  RAM的起始地址也需要修改为MSP430G2755的0x1100  <0x20FF > = End address of RAM  RAM的结束地址也需要修改为MSP430G2755的0x20FF  <0x80> = Size of the stack  MSP430G2755默认的堆栈大小为0x80  <0x1000> = Start address of info memory used for bootloader  Information的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改  <0x10BF > = End address of info memory used for bootloader  Information的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改  注意如上修改的参数6,及中断向量的数量,在Bootloader中的中断向量不需要修改,只修改MSP430G2755应用程序App中的中断向量即可,通过下图可以直观看到中断向量的在Bin文件中的分布。 Figure1.MSP430G2755中断向量 Figure2. MSP430G2755 Bin文件对应虚拟中断向量表 注意在这里的809C 和80E2 就对应MSP430G2755应用程序中的P1_Isr 和Timer_A,GPIO中断和定时器中断。下图会看到在MSP430G2755 Bootloader中虚拟中断向量表的分布。 Figure3.MSP430G2755 Bootloader虚拟中断向量表  2.2工程CMD文件添加到工程中 将2.1步骤中产生的CMD文件,分别添加到MSP430G2755的Bootloader及应用程序App的工程中,如下图所示:  Figure4.MSP540G2755 CMD文件 2.3应用程序txt转化c文件 通过CCS编译器,编译MSP430G2755的应用程序,编译完成后会产生一个txt文件下载格式,我们需要将这个产生的txt文件转换为.c文件,这个.c文件才能给主控MCU使用,通过Bootloader下载到MSP430G2755中。转化运行指令如下: 通过这步将生成的.c文件,添加到主MCU中的main函数文件路径中,在这里我们测试的主控MCU是MSP430G2553,添加后的程序如下图所示: Figure5.Host MCU添加升级程序  2.4写入CRC校验地址信息 通过上步我们在主控MSP430G2553中添加了需要升级的应用程序,同时我们还要在主MCU中修改目标升级芯片(MSP430G2755)的CRC地址信息,修改参考如下, Figure6. MSP430G2553添加CRC地址信息  注意此时已经不再需要MSPBoot用户指导手册中的CRC生成工具,进行CRC的校验,我们看到其实直接在主MCU中计算了CRC校验,并且把CRC的值放到指定的位置。 Figure7. MSP430G2553 计算CRC数值  2.5修改MSP430G2755应用程序 在这测试了将之前MSP430G2553默认的P1.1和P1.2口UART,修改为MSP430G2755硬件P3.4和P3.5口UART接收数据的接口。实际的参考代码如下:   Figure8. MSP430G2755 UART口修改 特别注意,在MSP430G2755应用程序App中,有两个中断默认使用即P1口和定时器中断,不能直接将P1口和Timer的中断直接屏蔽掉,这样会导致Host主控MSP430G2553升级MSP430G2553成功后,MSP430G2553并未正常的启动应用程序。如果在应用程序中不需要这两个中断向量,则在第一步产生CMD文件的过程中需要修改<6> = Size of shared vectors 这个参数。   3.小结  本文总结了通过以上步骤我们完成了从MSP430G2553到MSP430G2755 Bootloader的移植,那我们总结MSP430G2755 Bootloader和应用程序App的整个程序架构,分析如下:  我们通过工具读取了主程序移植了BootLoader的MSP430G2755的总代码,其中MSP430G2755存储Flash地址分析如下  从0x8000-0x8100为应用程序  从0xFBC0-0xFBF0 为虚拟的中断向量表  从0xFC00-0xFFD0 为Bootloder  从0xFFE0-0xFFF0 为真实的中断向量表  

  • 2019-06-10
  • 回复了主题帖: 希望有人能帮忙看看我这个TM4C123G的最小系统原理图是否正确

    怎么样,找到具体原因没。

  • 回复了主题帖: RF多频道同时工作的一种算法

    要是有具体程序就好啦。

  • 回复了主题帖: MSP430FR2355 LaunchPad™ 开发套件

    好东西啊,可以玩玩。

  • 回复了主题帖: 一图看懂5G比4G强在哪,附带一项挑战

    灞波儿奔 发表于 2019-6-9 22:17 说的很好,是这样
    涨知识啦。

  • 2019-06-06
  • 发表了主题帖: OPT3004 在电池供电camera中 的应用

    Betty Guo 在电池供电的应用中,功耗是非常重要的指标。电池供电的Camera中通常会使用两颗MCU来实现,一颗超低功耗的MCU处于长期工作状态,主MCU处于休眠状态。当外界环境发生变化时,比如白天切换到夜晚或人员走动时,传感器会反馈外界环境信息给超低功耗的MCU,超低功耗的MCU会根据传递的信号唤醒主MCU进行工作,配置图像采集sensor,从而节约能效。 传统的长供电的摄像机应用中,多使用低成本的光敏电阻或光敏二极管作为光感元件。主MCU根据sensor采集的图像进行成像配置,同时光敏二极管作为辅助感光元件共同实现sensor的寄存器配置。 对于电池应用摄像机,由于主MCU长期处于休眠状态,外界光强的感知完全由光敏二极管来实现。由于光敏二极管动态范围窄(0Lux到1500Lux),当摄像机处于室外环境中时,外界光照强度很大,容易出现光强饱和现象,导致图像采集sensor配置不准确,影响画面。另一方面, 光敏二极管或光敏电阻本身也存在较大的功耗,影响系统的使用时间。 根据摄像机的结构,IR LED与光sensor处于同一块PCB板子上。当红外灯打开时,光sensor 会同时接收到红外光,因此光传感器必须能够有强的红外抑制能力,否则会导致参数配置不准确, 使红外滤光片IR CUT不断的进行切换。如下图所示: 综合以上,针对电池应用的光传感器,必须具备低功耗,高IR抑制比的性能。 OPT3004是一款和人眼的视觉响应高度匹配的光照传感器,具有很高的红外阻隔能力,是人眼匹配度低且红外阻隔能力差的光电二极管、光敏电阻等首选替代产品。测量范围为0.01Lux 至83000Lux,内置满量程设置功能,响应时间100ms-800ms可选。OPT3004还具有出色的角红外阻隔功能,可以实现红外入射角85°以上阻隔99%。   即使OPT3004和IR LED 位于同一块板子上,由于OPT3004出色的角入射红外抑制能力,它的OPT3004采集的光强值,可以通过以下方式近似计算: 自然光强=实际总光强-IR 抑制强度   其中,实际总光强指的是包含外界自然光和红外总的光照强度,IR抑制强度是指芯片内部的抑制能力,可以通过OPT3004寄存器中的0x04调节, 默认值为0x00。经过测试,在暗室中使用波长为850nm的光谱照射,当reg0x04=0x0004时,在完全黑暗情况下输出光强为0,能够完全抑制红外干扰的影响。 这里是针对光敏二极管和OPT3004的参数对比: 通过以上分析,OPT3004非常适用于在电池供电摄像机等红外灯和光传感器距离非常近的应用中,通过配置寄存器0x04调整红外抑制能力,可以完美替代光敏二极管解决在室外电池供电摄像机中,功耗大,动态范围窄以及受IR干扰的问题。

  • 回复了主题帖: TMS320C6678中Hyperlink接口的理解

    不错的分享,谢谢。

  • 回复了主题帖: 本周精彩博文分享

    是啊,这样的经验分享很重要的。

  • 2019-06-05
  • 回复了主题帖: 求助:互感器检测低频或直流剩余电流

    高手过来解答一下吧。

  • 回复了主题帖: MSP430通信资源之IIC通信

    IIC通信用的地方很多的。

统计信息

已有277人来访过

  • 芯币:1001
  • 好友:3
  • 主题:234
  • 回复:690
  • 课时:7
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言