Jacktang

  • 2019-06-24
  • 发表了主题帖: 滤波电路的设计

    交流电经过二极管整流之后,方向单一了,但是大小(电流强度)还是处在不断地变化之中。这种脉动直流一般是不能直接用来给无线电装供电的。要把脉动直流变成波形平滑的直流,还需要再做一番“填平取齐”的工作,这便是滤波。换句话说,滤波的任务,就是把整流器输出电压中的波动成分尽可能地减小,改造成接近恒稳的直流电。   电容滤波 电容器是一个储存电能的仓库。在电路中,当有电压加到电容器两端的时候,便对电容器充电,把电能储存在电容器中;当外加电压失去(或降低)之后,电容器将把储存的电能再放出来。充电的时候,电容器两端的电压逐渐升高,直到接近充电电压;放电的时候,电容器两端的电压逐渐降低,直到完全消失。电容器的容量越 大,负载电阻值越大,充电和放电所需要的时间越长。这种电容带两端电压不能突变的特性,正好可以用来承担滤波的任务。 图5-9是最简单的电容滤波电路,电容器与负载电阻并联,接在整流器后面,下面以图5-9(a)所示半波整施情况说明电容滤波的工作过程。在二极管导通期间,e2 向负载电阻Rfz 提供电流的同时,向电容器C充电,一直充到最大值。e2 达到最大值以后逐渐下降;而电容器两端电压不能突然变化,仍然保持较高电压。这时,D 受反向电压,不能导通,于是Uc便通过负载电阻Rfz 放电。由于C和Rfz 较大,放电速度很慢,在e2 下降期间里,电容器C上的电压降得不多。当e2 下一个周期来到并升高到大于Uc时,又再次对电容器充电。如此重复,电容器C两端(即负载电阻Rfz :两端)便保持了一个较平稳的电压,在波形图上呈现出比较平滑的波形。图5-10(a)(b)中分别示出半波整流和全波整流时电容滤波前后的输出波形。 显然,电容量越大,滤波效果越好,输出波形越趋于平滑,输出电压也越高。但是,电容量达到一定值以后,再加大电容量对提高滤波效果已无明显作用。通常应根据负载电用和输出电说的大小选择最佳电容量。表5-2 中所列滤波电容器容量和输出电流的关系,可供参考。 电容器的耐压值一般取 的1.5倍。 表5-3中列出带有滤波器的整流电路中各电压的关系。 表一、   输出电流 2A左右 1A左右 0.5-1A左右 0.1-0.5A 100-50mA 50mA以下 滤波电容 4000u 2000u 1000u 500u 200u-500u 200u   采用电容滤波的整流电路,输出电压随时出电流变化较大,这对于变化负载(如乙类推挽电路)来说是很不利的。 二、电感滤波   利用电感对交流阻抗大而对直流用抗小的特点,可以用带铁芯的线圈做成滤波器。电磁滤波输出电压较低,相输出电压波动小,随负载变化也很小,适用于负载电流较大的场合。 三、复式滤波器。   把电容按在负载并联支路,把电感或电阻接在串联支路,可以组成复式滤波器,达到更佳的滤波效果口这种电路的形状很象字母π,所以又叫π型滤波器。   图5-12所示是由电磁与电容组成的LC滤波器,其滤波效能很高,几乎没有直流电压损失,适用于负载电流较大、要求纹波很小的场合。但是,这种滤波器由于电感体积和重量大(高频时可减小),比较笨重,成本也较高,一般情况下使用得不多。 由电阻与电容组成的RC滤波器示于图5-13中。这种复式滤波器结构简单,能兼起降压、限流作用,滤波效能也较高,是最后用的一种滤波器。上述两种复式滤波器,由于接有电容,带负载能力都较差.  

  • 发表了主题帖: LTC3631EMS8E 12V转5V电路原理图

    LTC3631EMS8E 12V转5V电路原理图 ,12V转5V电路原理图,可以使用

  • 发表了主题帖: 双向5V、3.3V逻辑电平转换电路

    双向5V、3.3V逻辑电平转换电路

  • 发表了主题帖: CCS8 下 CC1310SimpleLink SDK 的GPIO配置使用流程

    第一步:配置GPIO口 GPIO_setConfig(uint_least8_t index,GPIO_PinConfig pinConfig); //index:要配置的IO口 //pinConfig:设置IO口的模式,不同参数可用“|”运算符 第二步:配置中断(也可以不用配置) GPIO_setCallback(uint_least8_t index, GPIO_CallbackFxn callback); //功能:设置IO口的回调函数 //index:要配置的IO口 //callback:配置的回调函数的函数指针 GPIO_enableInt(uint_least8_t index); //功能:使能目标中断 第三步:使用IO口 GPIO_write(uint_least8_t index, unsigned int value); uint_fast8_t GPIO_read(uint_least8_t index); void GPIO_toggle(uint_least8_t index); 主要头文件: #include <ti/drivers/GPIO.h>  

  • 发表了主题帖: 说下CC1310开发环境

    一、准备工作 1.sdk版本:simplelink_cc13x0_sdk_1_60_00_21 2.开发工具:IAR(Embedded Workbench 8.0_2)或者CCS(Code Composer Studio 7.3.0) 3.开发板:CC1310(Rev 1.4),CC1310F128 4.IAR导入配置:IAR-->Tools-->Configure custom argument variable-->Global-->import   import路径:C:\ti\simplelink_cc13x0_sdk_1_60_00_21\tools\iar 中SIMPLELINK_CC13XX_CC26XX_SDK.custom_argvars 二、新建一个IAR工程 1.将C:\ti\simplelink_cc13x0_sdk_1_60_00_21\tools\iar中的Examples.html 拖入IAR中 2.在CC1310_LAUNCHXL中复制一个demo,比如复制一个uart例程,在TI Drivers下选择uartecho的NO RTOS 3.在工作盘建立一个工程文件夹,选择该文件夹为复制的工程路径 4.建立一个Source Insight来阅读代码,需要将ti的C:\ti\simplelink_cc13x0_sdk_1_60_00_21\source\ti\drivers 包含 5.打开例程的工程,右击工程,修改调试配置:   1)options-->TI XDS-->emulator-->specify custom board file   2)options-->TI XDS-->board-->CC13xx_XDS110_CJTAG.dat   3)output converter -->Generate addition output-->output format --> Intel extended hex 三、编译和仿真 1.给开发板上电 2.检查设备管理器中的端口有XDS110 Class Application/User UART和XDS110 Class Auxiliary Data Port这两个端口,如果没有,需要检查一下是否驱动没装 3.编译工程和下载  

  • 2019-06-22
  • 发表了主题帖: 5G 网络将会怎样改变社会?

             5G网络,预示速度超过1Gbit / sec,在几分钟甚至几秒内下载高清电影。虽然现有的4G网络已经非常快速,但5G承诺让它们看起来像什么 ?        对于5G,华为提出了几个特征:峰值网络速率达到10Gbps、网络传输速度比4G快10—100倍、网络时延从4G的50毫秒缩短到1毫秒、满足1000亿量级的网络连接、整个移动网络的每比特能耗降低1000倍。       5G 网络将会怎样改变现在的社会?

  • 发表了主题帖: ZigBee技术语音图像无线监控系统的设计与实现

            系统由语音的双向无线传输和图像的无线传输两部分组成,使工作人员在监控中心便可以方便地监视到一些环境比较恶劣的场合,及时处理各种运营事故,确保运营安全。 1 ZigBee技术实现语音无线传输 ① 语音无线传输系统总体结构 语音的无线传输以嵌入式微处理器和射频收发模块为核心,辅以外部的放大器、滤波电路、音频编解码器来实现,总体结构如图1所示。     图1 语音无线传输总体框图     运算放大器负责对麦克风接收到的语音信号进行放大和消除部分干扰;音频编解码器完成对语音信号的A/D、D/A转换和音频信号的编、解码;嵌入式微处理器负责存储、处理本身采集的数据以及其他节点发来的数据,协调与其他节点之间的通信;射频收发模块负责与其他节点进行无线通信,交换控制信息,完成数据的接收和发送;功率放大器对解码和D/A转换后的模拟语音信号进行放大,恢复成原来的数据信号后由扬声器输出。

  • 2019-06-21
  • 发表了主题帖: TI C2000™ 微控制器的全新通信功能!

          利用C2000 F2838x 32位微控制器,设计人员能够在单个芯片上实现交流伺服驱动器和其他工业系统的连通性,包括 EtherCAT、以太网和具有灵活数据速率的控制器局域网(CAN FD)。         有通信接口的系统通常需要一个外部专用集成电路(ASIC)或专用的主机控制微处理器,但这会降低设计架构的灵活性,增加复杂性,并占用电路板上的空间。而新推出的C2000 F2838x微控制器并不依赖外部ASIC,从而减小了整体解决方案的尺寸,并减少了所用的材料。           2838x微控制器集成了三种工业通信协议,员能够根据每个系统的特定需求定制一个微控制器。实现这一目标所需要的关键组件是一种基于Arm® Cortex®-M4子系统的新型连接管理器,它可以减少部分处理密集型通信,并优化连通性。除了这些功能外,C2000 F2838x 微控制器还具有比前一代C2000系列微控制器更强的实时控制性能和更高的灵活性。         C2000 F2838x系列微控制器 在电气隔离架构方面,新型微控制器采用具有8个接收通道的快速串行接口,能够以最少的引脚实现速度高达200 Mbps的芯片间通信。可以在CAN FD设计中利用这一高集成度特点,通过将F2838x与TI系统基础芯片(SBC)配对,快速增加可用的CAN FD端口数量,例如带有集成CAN FD控制器和收发器的TCAN4550 SBC。 最大程度地提高实时控制性能:           因搭载64位浮点运算单元和快速整除硬件,基于C28x中央处理器的控制使差分功能和高精度设计成为可能。对于伺服驱动应用,快速电流环路技术可在500纳秒以内处理磁场定向控制,以实现更精确的位置控制。 灵活集成传感技术,改善实时控制:          C2000 F2838x系列还集成了一个单端16位模数转换器,可用通道数比前一代的C2000微控制器增加了一倍,从而最大限度地减少了外部元件和系统延迟,并最大限度地提高了控制环路精度。扩展的可配置逻辑块使设计人员能够定制外围设备,并消除或减少对现场可编程门阵列的需求。 TMS320F28388D (预发布)          具有连接管理器、2 个 C28x+CLA CPU、1.5MB 闪存、FPU64、CLB、以太网、EtherCAT 的 32 位 MCU 数据表 TMS320F2838x Microcontrollers With Connectivity Manager 数据表   (英文內容)  立即查看    下载 用户指南  TMS320F2838xD Delfino™ Microcontrollers Technical Reference Manual  (英文內容)  TMS320C28x Extended Instruction Sets Technical Reference Manual  (英文內容) 勘误表  TMS320F2838x Delfino™ MCUs Silicon Errata   (英文內容)

  • 2019-06-20
  • 发表了主题帖: 电机驱动集成的故事

         就像每个MOSFET需要一个栅极驱动器来切换它,每个电机后面总是有一个驱动力。根据复杂程度和系统成本、尺寸和性能要求,驱动电机的方式多样。       最简单和离散的解决方案是由两个晶体管组成的图腾柱/推挽电路。这些晶体管可以是NPN和PNP晶体管的不同组合,产生将输入逻辑信号转换为高电流信号的放大器,其反之又导通和关断MOSFET和IGBT。在图1中,发射器被连接,以给出放大输出以驱动FET。这种解决方案已广泛用于许多不同的应用,包括电动机驱动,主要是由于其成本低并易于使用,但仍然存在一些限制和缺点。   图1:典型的推挽/图腾柱栅极驱动电路           例如,晶体管可以产生热,这在一些系统中引起热问题。或者两个晶体管都可以短暂接通,这导致电路直通。对于PCB空间有限的应用,图腾柱电路不是理想的选择,因为它需要多个组件来实现栅极驱动功能。对于更高的输出电压,图1所示的解决方案需要额外的电平移位电路,以便在使用仅提供5V或更低电压的控制器来驱动开关时,实现输出和输入上的电压电平。晶体管和电平移位电路增加了图腾柱电路解决方案的物料清单(BOM)数量和所需的印刷电路板(PCB)空间。 栅极驱动器集成电路(IC)可以解决这些问题。栅极驱动器IC实现与图腾柱电路相同的功能,但有许多额外的好处: 栅极驱动器IC节省了空间和资源,因为它将所有组件集成到单个封装中。因此,物理尺寸较小,设计更直接,装配更容易。 栅极驱动器IC简化了电路板布局,减少了设计不确定性,因为数据表具有所有规格。 驱动电流不限于输入基极电流和增益,因此驱动能力更强,从而减少开关损耗并提高效率。 欠电压锁定(UVLO)和“防直通”等保护功能提高了系统的鲁棒性。         虽然图腾柱电路是作为一种成熟解决方案已流行多年,但现代和未来的系统需要更高的集成度和更高的性能。随着半导体技术的进步,栅极驱动器IC的成本已可与分立电路相比,这使得IC解决方案对于大多数应用而言更具吸引力和可行性。       TI提供了广泛的栅极驱动器产品组合,可以适用于几乎所有市场和应用。TI的栅极驱动器支持非隔离解决方案的电压高达620V,隔离解决方案的电压高达5kV。LM5109B是低于100V的电机解决方案的通用解决方案。有关更多详细信息,请参见TI栅极驱动器页。        若喜欢集成度更高的解决方案,那么系统级解决方案不仅提供栅极驱动能力,而且还具有MOSFET、片上通信以及不同级别的保护和控制,所有这些都集成在一个芯片中。这些解决方案进一步减少物理尺寸和设计不确定性。例如,TI的DRV8xxx系列是用于有刷直流、无刷直流和步进电机的通用解决方案。有关详细信息,请参阅TI电机驱动器页。

  • 发表了主题帖: 电机控制设计,精度?分辨率?弧分?

             开车上班的路上:交通灯变绿,您立刻踩下油门,车在几秒钟内快速响应,继续驶向公司。这个过程看似简单,但实际上,车内却发生了一系列的复杂操作。让我们一起来看看吧。         踩下踏板时,电机将通过转轴向车子提供必要的扭矩,随后牵引电机驱动车辆前进。牵引电机(通常为三相同步电机)由复杂的电路控制,包括多个晶体管、电机驱动器,以及保护和反馈控制。反馈控制信号由电机位置传感器(见图1)以模拟角度输出信号的形式发出(注意,所有现实世界的信号都是模拟的)。借助于模拟-数字转换器(ADC),连续的模拟信号被转换成数字域。理想的情况下,您可以将连续的模拟信号分解成无限数量的数位步进,但在现实世界中,ADC的模拟信号量化是有限的数量步进,而由此导致的误差称为量化误差。这里便涉及到“精度”和“分辨率”这两个术语。       图1:车辆电机控制系统的典型系统框图   精度 以12位轴角数字转换器(RDC)为例。转轴转动一圈,转换器输出212 = 4096个数字码。在电机控制中,步长通常以弧分或弧秒来定义。一度60分钟,一转360度。因此,一圈上有360×60 = 21600个弧分。由于存在4096个数字码,所以每个分区以= 21600/4096,即5.27弧分为间隔。5.27弧分对应于一个最低有效位或1LSB。因此,即使输入角度(连续信号)是100%准确的,输出数字码在下一个代码前的移动也不能超过1LSB(或5.27弧分)。RDC在指定该精度值时会考虑偏移、增益和线性误差因素。作为参考,无刷旋转变压器的典型精度规格为10弧分。整个解析装置系统的典型误差,加上传感器和转换误差,大约为±15.273弧分(解析传感器为10弧分,而我的示例中为+5.273弧分)。这些数字将有助于我们为系统选择合适的传感器解决方案。   分辨率        那么,分辨率是什么?“12位”分辨率是指360度角旋中212个不同的输出码。 实际分辨率只是RDC输出端的可用位数;请注意,并不是所有位都是无噪声的。有效分辨率是指在考虑到信号噪声的情况下模拟数字转换中的真正“有用”位。这些是有效位数(ENOB)。 ENOB经常与产品数据表中所述的分辨率混淆。   1 LSB是什么意思? 到目前为止,我们已经讨论了精度和分辨率的定义。 现在,让我们将这些知识应用到一个系统中,在该系统中精度和分辨率通常以LSB为单位。您想知道系统环境中LSB的含义吗?首先,我们来看一下电机控制领域中1 LSB相对弧分和度数的转换值。 以下以12位和10位为例: 在12位中,1 LSB等于: 1LSB = 360 ÷ 212 = 0.087度= 5.27弧分= ±2.64弧分= ±0.04395度 同理,在10位中,1 LSB等于: 1LSB = 360 ÷ 210 = 0.351度= 21.09弧分= ±10.54弧分= ±0.1757度   结论      汽车操作背后的深层次原理是不是一件很有趣的事?精度和分辨率规格选择合适的传感解决方案的基础。 当精度优于分辨率时,转换器的转移函数可以通过分辨率位数实现精确控制。

  • 2019-06-19
  • 发表了主题帖: MSP432 MCU发挥实时操作系统所具有的优势

    用32位ARM系统进行开发时通常需要立即应对多个操作—在这种情况下,实时操作系统 (RTOS) 会派得上用场。 MSP432 MCU提供与数个TI RTOS解决方案(其中包括TI-RTOS和ENergia MT)和第三方RTOS解决方案(其中包括FreeRTOS,ARM CMSIS-RIX和Micrium-OS)的兼容性。  由于无需从头开始创建基本系统软件函数,RTOS的使用可以加快开发进度,并且可以在更加复杂的嵌入式系统中更好地管理数个资源!   对于只使用内核的准系统选项,在开始时只使用4kB的代码,你可以使用许多出色功能,诸如多任务、软件中断、软件定时器、甚至是针对低功耗模式进行优化的动态时钟运行。对于那些需要功能更强大的RTOS来说,TI-RTOS(ARM RTX可能也可以实现)还提供了很多稳健耐用的驱动程序,这些驱动程序可以帮助你即时高效控制不同外设或通信层,比如说Wi-Fi,TCP-IP,或者串行通信。这些RTOS中的一些还是专门被编写用来充分利用每个MSP432 MCU所特有的超低功耗特性。比如说,TI-RTOS具有一个独特电源管理模块,可以根据你的性能需要来配置整个系统,用单个简单的API取代了一行又一行代码。 通过提供预先测试和预集成的必要系统软件组件,RTOS使得开发人员能够立即将注意力转向使他们的应用区别于其它产品方面。 在这个即将推出的RTOS博客系列中,我们将着重介绍那些能够与全新MSP432 MCU一同使用的不同RTOS解决方案。今天,我们先从TI-RTOS入手。在这个系列的下一篇博客中,我们将讨论: -          与MSP32 MCU一同使用Real-Time Engineers Ltd(实时工程师公司)出品的FreeRTOS(6月1日) -          与MSP432 MCU一同使用Keil生产的ARM CMSIS-RTX(6月9日) TI-RTOS由TI开发和维护,MSP432 MCU提供超过50个示例来实现对TI-RTOS的完全支持!下面是TI-RTOS的主要结构: 对于增加的节电功能,使用Power Manager(电源管理器)来简化和优化运行期间的功率。相对于其它RTOS解决方案,这是TI-RTOS所具有的独特特性。 为了简化软件开发,TI-RTOS还包括可以与TI-RTOS内核,甚至其它RTOS解决方案一同工作的功率监控驱动程序。下面是TI-RTOS所支持的驱动程序列表。 此外,对于那些Energia的忠实拥趸—TI-RTOS提供针对Energia MT的底层结构,这是第一款为业余爱好者准备的支持多线程IDE的MSP432 MCU!

  • 发表了主题帖: MSP432的MCU实现语音识别技术

    在万物互联的世界中,越来越多能够理解语音内容的电子设备逐渐进入我们的视线。在智能手机、平板电脑和笔记本等拥有Siri或Cortana应用程序的设备中,语音识别能够帮助用户搜索答案或控制周围的电子器件等。虽然这些应用程序让人眼前一亮,但是它们却占用了大量的处理能力和内存。所以,人们对于微控制器(MCU)因过小而无法识别语音的误解也就不足为奇了。 没错,MCU的低功耗和小尺寸设计虽然使它不足以理解全部语音内容,不过对于小型低功耗的嵌入式应用而言,也许只需识别几个定义明确的短语就大功告成了,例如“给我的咖啡加热”或“关灯”等。最近,德州仪器(TI)在CES上所展示的低功耗MSP432™ MCU上演示了这个功能。 TI还发布了一个用C语言代码编写的语音识别器库,这个库使得基于MSP432 MCU的应用能够识别用户个人经常使用的语音短语,在忽略其它语音内容的情况下可识别的短语多达11个。虽然用户在设置时必须重复几遍希望被识别的短语,不过一旦这一步成功完成,后面就可以顺利使用了。 这个语音识别器库具有很多令人期待的功能,例如: 用户可以随时更改自己的短语 用户可以设定识别器只对少数几个短语做出响应 当然,用户也可以根据个人需要将短语库中某些短语进行删除 此外,连同语音识别库一起提供的还有一些易于使用的头文件和用户与API指南,以帮助用户快速上手。下载内容还包括针对MSP432 MCU LaunchPad™ 开发套件、Audio BoosterPack™ 插入式模块以及Sharp或Kentec LCD BoosterPack套件的示例演示程序。 这个演示应用通过MSP432 MCU内集成的14位模数转换器(ADC14)来收集语音,以及用于显示菜单的液晶显示屏(LCD)。这个菜单能够成功运行识别功能,用户可以选择: 首先说出一个希望识别器记住的短语。识别器将生成一个针对这个语音的模型,并将其存储在闪存中(一个被称为注册的任务)。 再说一次已注册的短语。识别器将用它来制作一个更好的模型,以提升性能(一个被称为更新的任务)。 删除被注册的第一个模型 运行识别功能

  • 发表了主题帖: 错误empty character constant的解决办法

          用gcc编译如上程序时出现了“empty character constant”的错误。 原因在于第26行中单引号要有个空格,empty character constant这个英文的意思就是提示空字符。

  • 发表了主题帖: keil错误和警告

    keil 是使用比较广泛的单片机开发环境,在使用的过程中,工程编译完毕后可能会出现错误或者警告。对于错误必须要改,但是对于警告而言,你可以忽略。但值得一提的是,搞技术的人多多少少都有点强迫症,如果把警告在那里放着,你看着肯定不舒服,对于经常出现的警告和错误我大体总结了一下,希望对大家能有所帮助。 1. Warning 280:’i’:unreferenced local variable 说明 局部变量 i 在函数中未作任何的存取操作; 解决方法 消除函数中 i变量的声明; 2 Warning 206:’LED_Init’:missing function-prototype 说明 LED_Init( )函数未作声明 或未作外部声明,所以无法给其他函数调用; 解决方法 将叙述LED_Init (void)写在程序的最前端声明,如果是其他文件的函数则要写成 extern void LED_Init (void),即作外部声明; 3 Compling :C:\8051\MANN.C Error:318:can’t open file ‘led.h’ 说明 在编译 C:\8051\MANN.C 程序过程中 由于 main.c 用了指令#include “led.h”,但却找不该文件; 解决方法 编写一个led.h 的包含档并存入到 c:\8051 的工作目录中; 4 Compling:C:\8051\LED.C Error 237:’Led_ON’:function already has a body 说明 Led_ON( )函数名称重复定义 即有两个以上一样的函数名称; 解决方法 修正其中的一个函数名称 使得函数名称都是独立的; 5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAYX1MS?DELAY 说明 DelayX1ms( )函数未被其它函数调用 也会占用程序记忆体空间; 解决方法 去掉 DelayX1ms( )函数 或利用条件编译#if …..#endif,可保留该函数并不编译; 6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP FROM : 0025H TO: 0025H 说明 外部资料ROM 的 0025H重复定义地址; 解决方法 外部资料 ROM的定义如下; Pdata unsigned char XFR_ADC _at_0x25 其中 XFR_ADC 变量的名称为0x25,请检查是否有其它的变量名称也是定义在0x25 处并修正它; 7 WARNING 206:’DelayX1ms’: missing function-prototype C:\8051\INPUT.C Error 267:’DelayX1ms‘:requires ANSI-style prototype C:\8051\INPUT.C 说明 程序中有调用DelayX1ms 函数 但该函数没定义 即未编写程序内容或函数已定义但未作声明; 解决方法 编写 DelayX1ms 的内容 编写完后也要作声明或作外部声明可在 delay.h的包含档宣告成外部 以便其它函数调用; 8 ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL SYMBOL:MUSIC3 MODULE:C:\8051\MUSIC.OBJ(MUSIC) ***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL:MUSIC3 MODULE:C:\8051\MUSIC.OBJ(MUSIC) ADDRESS:0018H 说明 程序中有调用 MUSIC3函数,但未包含该函数的.c加入到工程中; 解决方法:将包含MUSIC3函数的MUSIC.c文件添加到工程文件中去; 9 ***ERROR 107:ADDESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GOUP_ LENGTH: 0018H ***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL SYMBOL: VOLUME MODULE: C:\8051\OSDM.OBJ(OSDM) ADDRESS: 4036H 说明 data 存储空间的地址范围为 0~0x7f,当公用变量数目和函数里的局部变量 如果存储模式设为SMALL 则局部变量先使用工作寄存器R2~R7作暂存 当存储器不够用时则会以 data型别的空间作暂存的个数超过 0x7f 时就会出现地址不够的现象; 解决方法:将data型的公共变量修改为idata型; 10 “*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL” *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL 如果你在用C51编译器出现上面的警告,这个只是初学者和粗心者才会犯的错误:没把C文件添加到项目中! 另外,还有可能是因为存在没有被调用的已经定义的函数,或者相关的已经定义的变量没有使用。

  • 2019-06-18
  • 发表了主题帖: C2000 MCU 的 EnDat 2.2 绝对编码器主接口参考设计

         TIDM-1008是一款适用于 C2000 MCU 的 EnDat 2.2 绝对编码器主接口参考设计。C2000 位置管理器技术可提供集式解决方案来连接数字绝对编码器以及旋转变压器和 SINCOS 传感器,从而无需使用工业逆变器和伺服驱动器中常用的附加电路。TIDA-1008 所示的位置管理器 BoosterPack 是一个用于评估各种编码器接口的灵活的低电压平台,旨在与支持位置管理器的 LaunchPad(如 LAUNCHXL-F28379D)配合使用。 描述 C2000 位置管理器技术可提供集式解决方案来连接数字绝对编码器以及旋转变压器和 SINCOS 传感器,从而无需使用工业逆变器和伺服驱动器中常用的附加电路。TIDA-1008 所示的位置管理器 BoosterPack 是一个用于评估各种编码器接口的灵活的低电压平台,旨在与支持位置管理器的 LaunchPad(如 LAUNCHXL-F28379D)配合使用。随 TIDA-1008 提供的高度优化且易于使用的库和示例软件支持 EnDat 2.2 和 EnDat 2.1 标准。 特性 灵活的低电压设计支持多种绝对编码器接口以及旋转变压器和 SINCOS 传感器 TIDA-1008 与支持 C2000 位置管理器的 MCU(通过 LaunchPad)配合使用,以实现集成式 EnDat2.2 和 EnDat 2.1 数字协议解决方案 可通过软件驱动程序函数和数据结构轻松执行连接 EnDat2.2 的命令 C28x 优化 CRC 算法和数据解压缩 支持高达 8MHz 的 EnDat 时钟。经验证,适用的电缆长度最大为 100m TIDM-1008 包含一个评估板和一个展示 EnDat22 软件库的软件示例 设计指南 快速获得已通过验证的测试和仿真数据 下载设计指南 下载设计文件 TMS320F2837xD 双核 Delfino™ 微控制器 数据表 (Rev. K)  适用于C2000™ MCU 的EnDat 2.2 绝对编码器主接口参考设 计 (Rev. A) PDF 13322 2018年 6月 13日 下载英文版本 (Rev.A)  适用于C2000™ MCU 的EnDat 2.2 绝对编码器主接口参考设 计 PDF 13305 2017年 9月 26日 下载最新的英文版本 (Rev.A)  C2000 Position Manager EnDat22 Library Module User's Guide PDF 1101 2015年 11月 5日

  • 2019-06-17
  • 发表了主题帖: 如何降低微处理器中PWM DAC的纹波

          降低PWM DAC纹波的方法通常有两种:一种是降低低通滤波器的截止频率,另一种是提高PWM信号的频率。然而,前一种方法会加长上升时间,后一种方法会导致分辨率降低。本设计实例讨论了在不使用上述两种方法的情况下,如何降低PWM DAC的纹波。   我们大多数人都知道PWM DAC(数模转换器)。它们很容易实现,也很便宜,非常适合一些低性能的应用。   实现它们的方法是滤除PWM信号中的高频分量,只留下正比于占空比的低频或直流分量。但是低通滤波器并不能完全滤除PWM频率,因此低频/直流信号中通常都会有一定程度的纹波。   减少PWM DAC纹波的方法一般有两种。一种是降低低通滤波器的截止频率,另一种是提高PWM信号的频率。然而不可避免的是,更低的截止频率会延长上升时间;如果是在给定时钟频率点通过减小计数器尺寸实现的,那么更快的PWM频率会降低分辨率。   下面要讨论的设计实例非常有趣,着重介绍了另外一种降低PWM DAC纹波的方法。   事实上,我们可以使用相位差为180°的两个PWM信号来降低上述纹波。从直觉上,当两个相同频率的正弦波的相位相差180°时,它们会相互抵消,因此我们使用相位差为180°的两个PWM信号也能将彼此的谐波分量抵消干净,是这样吗?确实是这样,但并不是PWM信号的所有谐波分量都能抵消,有些分量可以抵消,有些却抵消不了。这与傅里叶级数有关,比较复杂,这里就不罗列一大堆数学公式来进行解释了。   两个PWM信号之间180°的相位差是如何实现的呢?我使用了TI的MSP320FR5969 LaunchPad,这种方法很常用。为了实现相位移动,需要两个定时器。其中一个定时器必须包含两个比较-捕获-PWM(CCP)模块,另一个只需要一个CCP模块。   在包含两个CCP模块的定时器中,可以用一个CCP模块来设置该定时器的PWM频率和占空比,另一个CCP模块产生中断,用于启动另一个定时器,两者的延时等于PWM周期的一半。另一个定时器中的CCP模块用于设置相同的PWM频率和占空比。你还必须对这个延时进行“微调”,因为软件会在PWM信号之间增加额外的时间。举例来说,在我的代码的102行,我将比较寄存器的值从(timer_period+1)/2改为了(timer_period+1)/2-27。   我做了一些小调查,想看看其它微控制器是否具有相同的硬件和能力来实现我所用的方法:许多Atmel微控制器都有1个以上的定时器,每种控制器通常都有两个CCP(比如ATmega 328),因此实现这种方法应该是可能的。另外一个常见的例子是STM32F051R8(这是一些流行的ST电路板使用的微控制器),它有11个定时器,其中许多定时器都有1个以上的CCP。TI基于ARM的微控制器通常有独立的PWM和定时器模块(如TM4C123GH6PM),因此应该更容易实现相移。使用其中一个定时器,两个PWM模块就可以以一半PWM周期的延时开启。   图1:单路和双路PWM电路。   在相移DAC的Vout端,两个PWM信号被累加在一起,结果有些谐波分量彼此抵消,最终实现了降低纹波的效果。   我们看看使用三种不同电阻值时的情况。每个PWM信号都是占空比为25%、频率为100kHz。   图2:上面的波形是传统PWM,下面的波形是双路相移PWM。从左到右每格的电压递减100mV、50mV、4mV。   从图中的结果可以看出:首先,峰-峰纹波降低了;其次,传统PWM DAC的纹波基频等于 PWM信号的频率(100kHz)。相移PWM DAC的纹波基频等于PWM信号的二次谐波(200kHz),这意味着我们用相移DAC成功地删除了PWM信号的一次谐波。   这种方法的一个优点是不用增加上升时间也能降低纹波(或者相同的纹波只需一半的上升时间)。   另外一个潜在优点是,将两个PWM设置为相隔一个计数值可以获得中间值,进而实现DAC有效分辨率的翻倍。虽然这会导致少许的不对称并增加纹波,但是影响很小可以忽略不计。

  • 发表了主题帖: 从数字PWM信号获得准确、快速稳定的模拟电压

          脉宽调制 (PWM) 是从微控制器或 FPGA 等数字器件产生模拟电压的一种常用方法。大多数微控制器都具有内置的专用 PWM 产生外设,而且其仅需几行 RTL 代码即可从 FPGA 产生一个 PWM 信号。如果模拟信号的性能要求不是太严格,那么这就是一种简单和实用的方法,因为它只需要一个输出引脚,而且与具有一个SPI 或 I2C 接口的数模转换器 (DAC) 相比,其代码开销是非常低。图 1 示出了一款典型应用,其采用一个经滤波的数字输出引脚来产生一个模拟电压。      图 1:PWM 至模拟转换   该方案的诸多不足之处您不必深究就能发现。理想情况下,一个 12 位模拟信号应具有小于 1LSB 的纹波,因而对于一个 5kHz PWM 信号需要采用一个 1.2Hz 低通滤波器。电压输出的阻抗由滤波器电阻决定,如果要保持一个大小合理的滤波电容器,那么它就会相当大。因此,输出必须只驱动一个高阻抗负载。PWM 至模拟转换函数的斜率 (增益) 由微控制器 (很可能是不准确) 的数字电源电压来决定。一个更微妙的影响是:为了保持线性度,在高态中连接至电源之数字输出引脚的有效电阻,以及在低态中连接至地的电阻,相比于滤波器电阻的阻值时, 失配必须很小。最后,PWM信号必须是连续的,旨在把输出电压保持在一个恒定值,假如处理器被置于一种低功率停机状态,这或许会产生问题。 PWM至模拟转换得到改善吗? 图 2 显示了试图弥补这些不足的方法。一个输出缓冲器允许在使用高阻抗滤波器电阻的同时提供一个低阻抗模拟输出。通过采用一个外部 CMOS 缓冲器改善了增益准确度,该缓冲器由一个高精度基准来供电,这样 PWM 信号摆幅在地电位和一个准确的高电平之间。此电路是有用的,但缺点是组件数量多,且无法改善 1.1 秒的稳定时间,再者也没有办法在不使用连续PWM 信号的情况下“保持” 模拟值。     图 2:PWM 至模拟转换得到改善吗?   下一页:改善PWM 至模拟转换改善了 PWM 至模拟转换! LTC2644 和 LTC2645 是具有内部 10ppm/°C 基准的双通道和四通道 PWM 至电压输出 DAC,可从数字PWM 信号提供真正的 8 位、10 位或 12 位性能。LTC2644 和 LTC2645 克服了上面提到的那些问题,采取的方法是直接测量输入 PWM 信号的占空比,并在每个上升沿上将适当的 8、10 或 12 位代码发送至一个高精度 DAC。 一个内部 1.25V 基准把全标度输出设定为 2.5V,如果需要一个不同的全标度输出,则可使用一个外部基准。一个单独的 IOVCC 引脚负责设定数字输入电平,从而允许直接连接至 1.8V FPGA、5V 微控制器或介于其间的任何电压。DC 准确度指标是非常出色的,具有 5mV 偏移、0.8% 最大增益误差和 2.5LSB (12 位) 最大 INL。输出稳定时间为 8μs,即可从 PWM 输入的上升沿稳定到终值 (在 12 位时为 1LSB) 的 0.024% 之内。对于 12 位版本,PWM 频率范围为 30Hz 至 6.25kHz。   图 3:4 通道 PWM 至模拟转换   (点击查看大图)   多用途的输出模式 图 4 示出了一款典型的电源修整 / 裕度调节应用电路,其利用了 LTC2644 的另一项独特特性。把 IDLSEL 连接至高电平将选择“采样 / 保持”操作;输出在启动时为高阻抗 (无裕度调节),输入端上的一个连续高电平将导致输出无限期地保持其数值,而一个连续低电平则把输出置于高阻抗状态。因此,在上电时可利用一个 PWM 突发脉冲 (其后随一个高电平) 对电源进行一次修整。将 PWM 信号拉至低电平可使电路干净地退出裕度调节操作。把 IDLSEL 连接至 GND 将选择“透明模式”,在该模式中,输入端上的一个连续高电平把输出设定至全标度,而一个连续低电平则把输出设定至零标度。     图 4:裕度调节应用电路   结论 倘若遭遇典型 PWM 至模拟转换方法的局限性,请不要绝望。LTC2645 可从脉宽调制数字输出产生准确、快速稳定的模拟信号,同时保持了低组件数目和代码简单性。

  • 发表了主题帖: msp430单片机程序升级的方法有哪些

         在搞430的FLASH的自定义法(利用串口)程序烧写,烧写完成后断电复位,reset按键就可以运行新的程序。但是和学长交流了一下,这种方法不够好,希望有一种软复位的方式。于是百度了一下,都是些对看门狗进行写入特殊值使得430的cpu复位。反正个人是没有采用。      因为在搞程序的烧写下载,所以看了一下430的BSL。看到里面有一段话,关于从C代码中启动BSL的方法。如下:   从一个外部应用中启动BSL   将程序计数器设定到内存为位置0x1000 来启动BSL。堆栈一直被复位,而RAM 被清空。应该注意的是,GIE 位未被禁用,所以如果不需要中断的话,这一步应该通过调用应用来完成,并且如果它们被使用的话,这一步应该从“返回BSL”返回。   由于堆栈被复位,位置0x1000 也可以被作为一个C 功能进行调用,示例代码如下:   ((void (*)())0x1000)()   于是想到,既然可以从C里面跳转到0x1000,那么也可以跳转到其他地址,比如复位地址了。   以6638为例。430的复位中断矢量地址是0xFFFE,里面存储了将要跳转的物理地址。6638的代码区起始地址是0x8000,正常复位是先进入复位中断,然后PC指针导入地址0x8000,然后从0x8000开始执行代码。那么软复位则是,执行((void (*)())0x8000)(),直接PC指针被导入0x8000的地址,而这个地址正好是6638的代码区起始地址,于是软复位了。个人分析一下这个指令,如有错误敬请大神们指正。   从代码上讲,(void (*)()是一个指向空函数的指针,((void (*)())0x8000)()是将0x8000强制转换为函数指针后进行函数调用,于是0x8000便被送入了PC指针。   对于其他的430单片,去查其数据手册FLASH段,弄清其代码区的开始地址,也可以用这个方法软复位了。   实测,IAR,CCS下编译、实践通过。

  • 发表了主题帖: 关于单片机的字库设计

    当需要液晶显示的时候,汉字的显示一直不是那么方便(在没有*字库的情况下)。 如果纯粹取模的话,就要考虑自作一个字库需要花费的时间和占用的flash资源。对于UCOS来说,就像楼主使用的破开发板,只有256Kflash,一个16*16 GB点阵字库就要占用200K+,自然是不可能放入用户源码的。 于是乎,楼主开始使用*字库,关于*字库碰到的一些问题在这里给大家简单说说,有用的话的就给楼主赞一个,哈哈哈 1.关于GB2312,可百度。 2.字库一般选用flash器件,采用SPI协议通信,通常4兆的片子足够使用常用字库的存储。 3.自制字库,最后会放上楼主曾用过的资源。纤细过程(加一些格式,好看得清楚,哈哈哈): 第一步,当然需要你将你所用的SPIflasn的初始化以及读写函数写好(我使用W25X16,2M,传输速率最大74MHZ,很快的;写函数:void W25X_Write_Bytes(uint32_t addr,u8* pBuffer, u16 nBytes) 注:W25X16写时,需要先擦除。读函数:void W25X_Read_Bytes(uint32_t addr, u8* pBuffer, u16 nBytes) 第二步,编写串口传输函数,采用串口中断的方式,波特率设置为115200(测试没有问题),接收外部输入的一个字节后立马将其写入SPI FLASH。与之前两个字符表示一个字节的方法速度提升一倍。 代码: view plaincopy to clipboardprint? u8 result;      u32 pAddr=0;      void USART1_IRQHandler(void)      {      if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)       {      result = USART_ReceiveData(USART1);       W25X_Write_Bytes(pAddr++,&result,1);      USART_ClearITPendingBit(USART1, USART_IT_RXNE); // 清除串口接受中断      }      }   第三步,设置一个按键进行擦除操作,通过串口或者LCD进行交互,以提示是否擦除完成。可以进行写FLASH。 第四步,制作中文字库,GB3212库包含6768个简体中文,首先打开“取点阵.exe”软件,然后在软件中打开“字符库.txt”文件。然后选择取模方式,可以设置字体样式、大小和方向设置等。注意“方向设置“选项,这里为了对应工程中的显示程序,选择——横向取模,高位在坐。其它选项只要适当修改显示程序就可以。然后点击“输出“按钮,将在该目录下得到字模数组文件(temp.txt)。 第五步,整理字库文件。上一步得到的字模数组文件还不能直接使用,需要进行整理以适合串口发送,去除各种注释符和标点字符,只保留两位字符组成的十六进制格式。接着将“temp.txt”改名为“HzLib.txt”,然后运行“整理字库.exe”,此时将得到整理好的字库“OutHzLib.txt”然后就可以直接将该字库通过串口发送到MCU了。 第六步,串口发送数据。推荐用附件中的串口调试软件,因为有些软件在对于文件发送这个功能做得似乎有些问题。本人也测试了两款串口调试软件,均不能得到结果,如果有其它好的也可以,反正只要达到目的就行。设置串口参数,然后在发送区设置中勾选“按十六进制发送”,点击“启动文件数据原”选项,选择制作好的字库“OutHzLib.txt”,不要点击“文件载入”。 第七步,打开串口,将板子接通电源,首先对Flash进行擦除操作,提示擦除结束后,点击串口发送,然后就慢慢等着字库写入FLASH。测试在波特率为115200下,取模大小为16*16,耗时为70s,似乎也不太久,如果取模越大,耗时就越长。写好字模后,就可以在工程中调用字库进行中文显示了(取GBK内码操作见工程)。另外如果flash容量够大的话,还可以写入其它字体样式和大小的字库,做一个专属的字库芯片。 4.X宝一个片子,经济实惠,随拿随用。做好了字库,就剩下怎样使用了 另外, 1.建议使用总线型SPI,速率绝对有保障。具体代码看各自的板子了。 2.如果使用软件SPI,送一段: view plaincopy to clipboardprint? #define MOSI_H GPIO_SetBits(GPIOA, GPIO_Pin_5)    #define MOSI_L GPIO_ResetBits(GPIOA, GPIO_Pin_5)    #define SCLK_H GPIO_SetBits(GPIOA, GPIO_Pin_7)    #define SCLK_L GPIO_ResetBits(GPIOA, GPIO_Pin_7)    #define MISO_H GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0)     void spi_init(void)    {     CE_25_1;   MOSI_H;    MISO_H;   SCLK_H;    }     unsigned char SPI_SendByte(unsigned char dt)    {    u8 i;     u8 temp=0;       for(i=8;i>0;i--)       {         if(dt&0x80)MOSI_H;            else MOSI_L;      SCLK_L;        SCLK_H;            temp<<=1;        dt<<=1;         if(MISO_H) temp++;              }     return temp;    }    

  • 发表了主题帖: 汽车类电阻式桥接压力传感器接口参考设计

    本帖最后由 Jacktang 于 2019-6-17 12:01 编辑        跟笔尖一样大小!!!TIDA-00793是汽车类电阻式桥接压力传感器接口参考设计,此参考设计使用 PGA301-Q1 为电阻桥型压力传感器提供简单、可靠且精确的传感器信号调节解决方案。该设计中实现的保护策略可防止压力传感器受到线束故障、EMI 和汽车电气瞬变的影响。设计指南中系统介绍了该设计中涉及的理论、操作和挑战。想要了解更多, 特性 0.17% 的温度精度(-40°C 至 125°C) 二阶温度和线性补偿算法 23x23mm 的外形设计 针对线束故障的保护(过压和反极性保护)、断线检测 符合 ISO7637-3 瞬态脉冲要求并经过测试符合 ISO11452-4 大电流注入 (BCI) 要求 原理图  

统计信息

已有237人来访过

  • 芯币:4570
  • 好友:--
  • 主题:1517
  • 回复:85
  • 课时:--
  • 资源:--

留言

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


现在还没有留言