TI28335开发板硬件电路
- 格式:pdf
- 大小:365.54 KB
- 文档页数:28
28335之GPIO28335之GPIO本系列文章由斌斌-龙臻独立完成,首发于QQ空间,会在百度空间、网易博客、人人网同步更新,转载必须注明作者和出处,必须注明原文链接。
注:本系列文章主要针对TI公司的C28xx系列DSP芯片的一些功能模块进行介绍,并描述基本的配置。
文章中提到的DSP芯片未说明即默认为TMS320F28335,简称为28335。
GPIO(General-Purpose Input/Output)——通用输入/输出口,对大多数从事电子行业的人来说并不是什么陌生的东西。
但它却是基础性的,很多MCU的后续开发都得用到GPIO。
28335有88个IO口,为GPIO0至GPIO87,其中GPIO0至GPIO63可以配置为8个核心中断。
28335的GPIO口可以分为三组,分别为A口(GPIO0至GPIO31),B口(GPIO32至GPIO63)和C口(GPIO64至GPIO87)。
GPIO的寄存器可以分为三种,分别是GPIO控制寄存器,GPIO数据寄存器和GPIO中断与低功耗模式选择寄存器。
详见表1、2、3。
表1:GPIO控制寄存器表2:GPIO数据寄存器表3:GPIO中断与低功耗模式选择寄存器我们按照表中的寄存器的顺序来讲解。
GPIO限制控制寄存器GPxCTRL(x=A,B,C)为配置为输入限制的引脚指定了采样周期。
采样周期介于限制采样周期之内,是相对于系统时钟周期的倍数。
具体的配置见表4,以A口为例。
表4:GPIO Port A Qualification Control(GPACTRL) Register Field Descriptions而GPIO限制选择寄存器GPxQSELy(x=A,B,C;y=1,2)指定了采样窗是3个采样点还是6个采样点。
具体的配置见表5,还是以A口为例。
表5:GPIO Port A Qualification Select 1(GPAQSEL1) Register Field Descriptions以上寄存器主要是为GPIO的输入功能进行的配置。
PWM的使用// Configure ePWM1// Setup TBCLKEPwm1Regs.TBPRD = EPWM_TIMER_TBPRD;// Set timer period 1500/2 TBCLKsEPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0EPwm1Regs.TBCTR = 0x0000; // Clear counter// Set Compare valuesEPwm1Regs.CMPA.half.CMPA = EPWM_CMPAB; // Set compare A value// EPwm1Regs.CMPB = EPWM_CMPAB; // Set Compare B value// Setup counter modeEPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up downEPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; // enable phase loading use for syncEPwm1Regs.TBCTL.bit.PHSDIR=TB_UP;EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2+TB_DIV4+TB_DIV4; // TBClock ratio = SYSCLKOUT/(2*HSPCLKDIV*EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 2^CLKDIV)// Setup shadowingEPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;// EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero// EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// Set actionsEPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on event A, up countEPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // Clear PWM1A on event A, down count// EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; //Clear PWM1B on event A, up count// EPwm1Regs.AQCTLB.bit.CAD = AQ_SET; // Set PWM1B on event A, down count// Set DeadBandEPwm1Regs.DBCTL.bit.IN_MODE=DBA_ALL;EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;EPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;EPwm1Regs.DBRED=Dbred; // Dead-band rising edge delayEPwm1Regs.DBFED=Dbfed; // Dead-band falling edge delay// Set Trip ZoneEPwm1Regs.TZSEL.bit.OSHT1=TZ_ENABLE;EPwm1Regs.TZCTL.bit.TZA=TZ_FORCE_LO;EPwm1Regs.TZCTL.bit.TZB=TZ_FORCE_LO;// Interrupt where we will change the Compare ValuesEPwm1Regs.ETSEL.bit.SOCBSEL= ET_CTR_ZERO;// Select start ADC (EPWMxSOCB) on Zero eventEPwm1Regs.ETSEL.bit.SOCBEN= Enable; // EnableEPwm1Regs.ETPS.bit.SOCBPRD=ET_1ST;主要注意的就是EPWM的死区子模块。
DSP28335的调试总结,这是一份总结很全面的资料,我在学习开发板的一些总结,希望能得到同行的帮助,愿与大家一起学习和分享1DSP的PWM信号1.1简介DSP28335共12路16位的ePWM,能进行频率和占空比控制。
ePWM的时钟TBCLK=SYSCLKOUT/(HSPCLKDIV×CLKDIV):PWM信号频率由时基周期寄存器TBPDR和时基计数器的计数模式决定。
初始化程序采用的计数模式为递增计数模式。
在递增计数模式下,时基计数器从零开始增加,直到达到周期寄存器值(TBPDR)。
然后时基计数器复位到零,再次开始增加。
PWM信号周期与频率的计算如下:1.2端口对应关系说明:JP0B的端口号按“Z”字形顺序数。
1.3初始化程序注释void InitPwm1AB(float32f){Uint16T= 2343750/f-1.0;//系统时钟SYSCLKOUT=150MHz,TBCLK=6.6666667ns,在连续增计数模式下,f=150000000/(TBPDR+1) EALLOW;//先初始化通用输入输出口//GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;EPwm1Regs.TBPHS.half.TBPHS= 0; // 在相位寄存器中设置计数器的起始计数位置//下面两条语句组合对PWM的时钟进行分频EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; //在周期寄存器中设置计数器的计数周期//TBCTL为定时器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE= TB_COUNT_UP; //设置计数模式位为连续增计数模式,产生对称方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 将定时器相位使能位关闭EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;//映射寄存器SHADOW使能并配置映射寄存器为自动读写EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 定时器时钟源选择,一共有四种时钟源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;// 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;//A模块比较模式EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//B模块比较模式EPwm1Regs.CMPCTL.bit.LOADAMODE= CC_CTR_ZERO; // A模块比较使能,通过写0来清除SHDWAMODE位来使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // B模块比较使能,通过写0来清除SHDWBMODE位来使能load on CTR=Zero//AQCTLA为输出A比较方式控制寄存器EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // TBCTR(计数器)计到零时使输出为反向EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//TBCTR(计数器)与CMPA在up 计数时相等使输出为high,这关系的输出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;}2DSP的CAN通信2.1CAN2.0B协议简述TMS320F28335上有2个增强型CAN总线控制器,符合CAN2.0B协议,其总线波特率可达到1Mbps。
基于 TMS320F28335的信号处理电路设计摘要:鉴于TMS320F206即将停产,需要寻求一款DSP对其进行替代,替换DSP后的信号处理电路需完成温度值、一路电气零位、三路加表惯性量、三路陀螺惯性量的采集以及惯性量的补偿计算和数据组帧发送的功能。
该信号处理电路基于浮点DSP TMS320F28335,该DSP的引用简化了惯性测量装置中的误差补偿计算,为单位类似的产品提供了一套可行方案。
TMS320F28335丰富的外设使得信号处理电路具有可再简化的潜力,其在惯性测量装置信号处理电路中的应用具有广阔前景。
通过系统试验,验证了系统软硬件设计的正确性高的应用推广价值。
关键词:DSP;信号处理电路;浮点1、前言现有技术方案主要为TMS320F206+异步串口SC28L202的方案,电路上电后完成外围电路的初始化,TMS320F206通过SC28L202相应的I/O完成AD7716的配置,AD7716初始化完成后每隔一个固定时间自动完成加表数据的采集并输出一个中断信号,所采数据存于FIFO中。
陀螺每隔一个固定时间将一帧数据存于SC28L202的FIFO中,当TMS320F206判到第四个AD7716中断来到后从相应的FIFO中取加表、陀螺数据,TMS320F206完成加表、陀螺数据温度补偿计算后组帧并向相应的接口发送数据。
本文以某信号处理电路设计为背景,为了解决TMS320F206即将停产的问题,电路架构由TMS320F206+异步串口SC28L202的方案升级为TMS320F28335+异步串口TL16C752CIPFB架构。
其中DSP为TI公司的TMS320F28335 [1],异步串口为TI公司的TL16C752CIPFB [2]。
2、某信号处理电路原理TMS320F206+异步串口SC28L202架构设计信号处理电路采用了TMS320F206+异步串口SC28L202架构。
信号处理电路主要由加速度计信号采集电路、陀螺信号采集电路、测温电路、数字信号处理及控制电路、外设输出接口电路组成。
系统硬件设计图3.1为该系统硬件总体框图,整个系统由功率驱动电路、调理与保护电路、DSP控制电路及无刷直流电机本体四大部分组成。
本节将分为两部分,即功率驱动硬件部分和数字控制硬件部分,阐述该系统的硬件设计。
图3.1 无刷直流电机系统硬件框图3.1功率与驱动电路本节先根据系统的特点,分析电路的拓扑选择,然后按照电路的三级结构,逐级说明其具体实现过程。
3.1.1 功率电路拓扑选择该电路输入单相交流电(220V/50Hz),输出直接驱动无刷直流电机。
电机前级需有三相逆变桥实现换相,由于电机频率较高,因而受三相逆变桥开关频率的限制,无法采用逆变桥PWM脉宽斩波控制实现调速控制。
本功率系统结构选择“交流-直流-直流-交流”方式,即在逆变桥前级加入buck电路,采用buck调压调速方式控制该高速永磁无刷直流电机。
功率电路结构框图如图3.2所示。
图3.2 功率电路结构框图3.1.2 启动缓冲电路图 3.2中第一级采用二极管不控整流,再用大电容滤波后得稳定直流电压1U 。
电路上电时,由于电容1C 两端电压不能突变,上电产生瞬间的大电流给其充电,该电流太大将造成1C 损坏。
为此,电路中加入了启动缓冲电路。
如下图3.3所示,上电时晶闸管1Q 尚未导通,通过11R C 串联回路给1C 充电,充电电流较小,1U 缓慢上升,电容受到保护。
再利用电阻2R 、3R 对1U 分压采样,当1U 上升到约输入电压峰值的90%时,采样电压1s U 将超过设定的门限电压TH U ,通过比较器后驱动光耦,从而触发晶闸管导通。
晶闸管导通后,1R 被短路,电路进入正常工作状态。
此后向后级供电的过程中,晶闸管一直导通,2R 、4R 的阻值非常大,不对后级产生影响。
后级关断或电路掉电时,1Q 关断,4R 为1C 提供放电回路。
图中TH U 由CC V +经电阻分压得到,而CC V +是由/AC DC 模块电源获得。
G AU 1s U Q 1图3.3 启动缓冲电路示意图3.1.3 直流-直流变换该环节实现调压调速功能,直接利用Buck 变换器降压,但电机满载时该电路输出电流很大,所需输出滤波电感太大。
基于CAN总线的TI DSP 28335程序烧录技术本文详细介绍了目前DSP芯片程序烧录的一般方式和其存在的诸多问题,基于此原因针对性地开发了一种基于CAN总线的TI DSP 28335芯片程序的烧录方法。
此方法接线简单便捷,烧写速度比传统方式快几倍。
电机控制器主控芯片目前大多采用TI公司的数字信号处理器(简称DSP)芯片,如TMS320LF2407,TMS320F2812,TMS320F28335(下文简称28335)等,28335又因具有高性能静态COMS技术,主频高达150MHz,还具有高性能的32位CPU以及增强型的CAN模块等优点而成为当前电机控制器主控芯片的首选。
目前28335芯片程序烧写技术背景目前,常用的DSP程序烧写有三种方法:利用仿真器烧写、通过拨码开关选择芯片引导程序及CAN通讯单行烧写。
大多目前,DSP程序烧写一般是利用仿真器完成来进行。
DSP与仿真器通过JATG接口(2×7的双排插针)进行连接,而双排插针只能布置在控制板上,无法引出到控制器壳体外,控制器一旦封盖后就不方便再进行程序升级;虽然在产品定型前的就算在程序调试阶段可以使用仿真器进行程序烧写,但仿真器插拔次数过多接口就会造成接口松动,造成接触不良,经常出现导致DSP与CCS应用软件连接不上的问题故障。
后来,有些也有部分用户通过目标板上的拨码开关选择芯片引导程序,采用SPI\SCI串口或CAN通讯等方式烧录程序。
由于这种方式需进行拨码开关选择,均需对目标板进行操作,且SPI\SCI为串口通讯,不能实现远程烧写,且烧写时间长,都不是程序烧写的最佳方式。
再后来又出现了CAN通讯单行烧写是另一种烧写方式,其应用于CAN通讯邮箱少的DSP芯片,通过采用少量邮箱进行数据传送,等待上位机目标代码完整传送完一行数据后将该行数据烧写到FLASH对应地址中,完成本行烧写后再进行下一行数据传输。
由于采用较少邮箱传送数据,决定了通讯传输速度慢,进而影响整个程序烧写的速度,这种方式也不是DSP28335最佳CAN通讯烧写程序方法。
28335 时钟电路学习CPU控制器的主频是CPU的一个极其重要的性能指标,决定着CPU处理一条基本指令所花费的时间的多少。
主频由时钟信号产生,而时钟信号是所有运算与处理的源头。
1.内部时钟与锁相环电路图1 时钟与锁相环控制电路原理图1.1 28335时钟源有两种:a.外部时钟:采用外部振荡器为时钟源头(简称外部时钟),是在XCLKIN引脚提供一定频率的时钟信号,也可以通过复用的X1引脚接入,也就是说是由其它数字系统或外部振荡器引入;图2 3.3V外部时钟源信号接入方法图3 1.9V外部时钟源信号接入方法b.内部时钟:采用F28335内部振荡器作为时钟源(简称内部时钟),在X1与X2之间连接一个晶体,就可以产生时钟源。
图4 内部时钟源信号接入方法(最常用)1.2锁相环电路(Phase-Locked Loop,简称PLL)如图1所示,28335采用的是30M的时钟信号,30M的OSCCLK信号经锁相环倍频后,倍频倍数通过寄存器PLLCR进行设置,设置为10,为300M 的VCOCLK时钟信号,F28335的时钟频率为150M,所以给CPU核的时候,还要进行一次二分频,分频通过寄存器PLLSTS进行设置。
至此产生了F28335的150M的时钟信号。
2.28335外设时钟C28X内核时钟输出,通过LOSPCP低速时钟寄存器设置预分频,成低速时钟信号LSPCLK,SPI,I2C,MCBSP这些串口通信都是使用的低速时钟信号。
通过HISPCP高速时钟寄存器设置预分频,成高速时钟信号HSPCLK,AD模块采用的是高速时钟信号,方便灵活设置AD采样率。
通过1/2分频给了eCAN模块。
直接输出给了系统控制寄存器模块、DMA模块、EPWM模块、ECAP模块、EQEP 模块这些高速外设模块。
当然这些外设基本都有自己的预定标时钟设置寄存器,如果预定标寄存器值为0的话,那么LSPCLK等时钟信号就成为了外设实际使用时钟信号。
作为一个电子硬件工程师,怎么不能懂DSP,或者我们中有一些同学对DSP的理解还不是很多,今天就让我们给大家介绍一个DSP的入门芯片,来自TI的TMS320F28335。
相信看过了这一系列的内容,大家会对DSP有初步的了解。
TMS320F28335简介:TMS320F28335采用176引脚LQFP四边形封装,其功能结构参见参考文献。
其主要性能如下:高性能的静态CMOS技术,指令周期为6.67 ns,主频达150 MHz;高性能的32位CPU,单精度浮点运算单元(FPU),采用哈佛流水线结构,能够快速执行中断响应,并具有统一的内存管理模式,可用C/C++语言实现复杂的数学算法;6通道的DMA控制器;片上256 Kxl6的Flash存储器,34 Kxl6的SARAM存储器.1 Kx16 OTPROM和8 Kxl6的Boot ROM。
其中Flash,OTPROM,16 Kxl6的SARAM均受密码保护;控制时钟系统具有片上振荡器,看门狗模块,支持动态PLL调节,内部可编程锁相环,通过软件设置相应寄存器的值改变CPU的输入时钟频率;8个外部中断,相对TMS320F281X系列的DSP,无专门的中断引脚。
GPI00~GPI063连接到该中断。
GPI00一GPI031连接到XINTl,XINT2及XNMI外部中断,GPl032~GPI063连接到XINT3一XINT7外部中断;支持58个外设中断的外设中断扩展控制器(PIE),管理片上外设和外部引脚引起的中断请求;增强型的外设模块:18个PWM输出,包含6个高分辨率脉宽调制模块(HRPWM)、6个事件捕获输入,2通道的正交调制模块(QEP);3个32位的定时器,定时器0和定时器1用作一般的定时器,定时器0接到PIE模块,定时器1接到中断INTl3;定时器2用于DSP/BIOS的片上实时系统,连接到中断INTl4,如果系统不使用DSP/BIOS,定时器2可用于一般定时器;串行外设为2通道CAN模块、3通道SCI模块、2个McBSP(多通道缓冲串行接口)模块、1个SPI模块、1个I2C主从兼容的串行总线接口模块;12位的A/D转换器具有16个转换通道、2个采样保持器、内外部参考电压,转换速度为80 ns,同时支持多通道转换;88个可编程的复用GPIO引脚;低功耗模式;1.9 V内核,3.3 V I/O供电;符合IEEEll49.1标准的片内扫描仿真接口(JTAG);TMS320F28335的存储器映射需注意以下几点:片上外设寄存器块0~3只能用于数据存储区,用户不能在该存储区内写入程序。