TMS320F28335简介
TMS320F28335是一款TI高功能TMS320C28x系列32位浮点DSP处理器。
TMS320F28335型数字信号处理器TI公司的一款TMS320C28X系列浮点DSP操控器。与以往的定点DSP比较,该器材的精度高,本钱低,功耗小,功能高,外设集成度高,数据以及程序存储量大,A/D转化更准确快速等。
TMS320F28335具有150MHz的高速处理才能,具有32位浮点处理单元,6个DMA通道支撑ADC、McBSP和EMIF,有多达18路的PWM输出,其中有6路为TI特有的更高精度的PWM输出(HRPWM),12位16通道ADC。得益于其浮点运算单元,用户可快速编写操控算法而无需在处理小数操作上消耗过多的时刻和精力,与前代DSP比较,均匀功能进步50%,并与定点C28x操控器软件兼容,然后简化软件开发,缩短开发周期,下降开发本钱。
TMS320F28335中心板电气特性
TMS320F28335(SOM-TL28335中心板)作业环境
环境参数\最小值\典型值\最大值
工业级温度:0°C\-\85°C
作业电压:4.8V\5V\5.5V
SOM-TL28335(TMS320F28335)中心板功耗
供电电压:5V
输入电流:292mA
额定功率:1.46W
TL28335-EVM开发板功耗
供电电压:5V
最大输入电流:400mA
最大功率:2W
TMS320F28335主要特点
根据TMS320F28335浮点DSP操控器;
TI主推高功能TMS320C28x系列DSP操控器,主频高达150MHz;
具有I2C、SPI、eCAN、ePWM等总线接口,适用于各种操控类工业设备;
体积小、功能强、便携性高,一起适用于多种手持设备;
契合高低温、振荡要求,满意工业环境使用。
TMS320f28335操控AD7656的硬件电路规划
AD7656片内集成6个16位250kpbsADC,6个真双极性高阻抗模仿输入,答应并行或串行输出,加速度仪选用+-15V供电,输出电流信号-20ma到20ma,调度电路选用AD627做调度电路,原理图现已规划出来如下:
p2为外接加速度传感器,2脚为电流输出,ad627是一种低功耗的外表放大器。它选用单、双两种电源供电,并可完成轨——轨输出。AD627选用真实的仪用放大器结构,它有两个反应环。其根本结构和典型的“双运放”仪用放大器相似,仅仅细节有所不同。别的,) 所具有的一个“电流反应”结构,使得它具有较好的共模抑制比。
图中20ma电流通过100欧姆采样电阻后变为2V;AD627不接R35则增益为5,故AD627输出为+-10V的电压,然后送入AD。AD7656的接线如下图所示:
上图中三路电流信号别离通过AD7656调度之后,变为电压信号送入DSP。在电路布线时应该选用模仿地数字地分隔布线,然后通过磁珠单点衔接,把整个电路板分为模仿部分和数字部分,不然很难到达采样精度要求。
下面附上AD7656的28335驱动程序
void RESET_AD(void)
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO4 = 1; // disable pullup on GPI4
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0; // GPI4 = GPI4
GpioCtrlRegs.GPADIR.bit.GPIO4 = 1; // GPI4 = output
GpioDataRegs.GPASET.bit.GPIO4 = 1;
EDIS;
delay_us(100);
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO4 = 1; // disable pullup on GPI4
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0; // GPI4 = GPI4
GpioCtrlRegs.GPADIR.bit.GPIO4 = 1; // GPI4 = output
GpioDataRegs.GPACLEAR.bit.GPIO4 = 1;
EDIS;
}
void Start_Convert()
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1; // disable pullup on GPI0
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPI0 = GPI0
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // GPI0 = output
GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
EDIS;
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1; // disable pullup on GPI0
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPI0 = GPI0
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // GPI0 = output
GpioDataRegs.GPASET.bit.GPIO0 = 1;
EDIS;
}
void Wait_AD()
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; // disable pullup on GPI2
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0; // GPI2 = GPI2
GpioCtrlRegs.GPADIR.bit.GPIO2 = 0; // GPI2 = input
EDIS;
while(GpioDataRegs.GPADAT.bit.GPIO2 == 1);
}
void start_AD(void )
{
Start_Convert();
Wait_AD();
}
Uint16 AD_read(void )
{
Uint16 temp=0;
temp= AD7656_ADD;
return temp;
}
void Get_Ad_Dat(void )//收集一切ad数据
{
int16 i=0,temp1;
int32 temp[3]={0,0,0};
for(i=0;i《FILTERLEN;i++)
{
start_AD();
temp1=AD7656_ADD;
temp[0]+=temp1;
temp1=AD7656_ADD;
temp[1]+=temp1;
temp1=AD7656_ADD;
temp[2]+=temp1;
temp1=AD7656_ADD;
temp1=AD7656_ADD;
temp1=AD7656_ADD;
}
AccDat.AD_x_cur[Counter]=temp[0]/FILTERLEN;
AccDat.AD_y_cur[Counter]=temp[1]/FILTERLEN;
AccDat.AD_z_cur[Counter]=temp[2]/FILTERLEN;
}
以下是当输入个通道接地时的输出波形 程序中FILTERLEN=8;
能够看到通过简略的数字处理AD7656能够到达1位的跳变精度, 上图中个通道的数据成果有些不一样, 距离比较大, 暂时还没有找到原因。