nullSEED TI C2000 培训教材SEED TI C2000 培训教材null第一部分:介绍什么是数字信号处理器 ? 什么是数字信号处理器 ? Microprocessor (µP):
一个多IC处理系统的核心器件
2种基本的结构:
„Von Neumann“- 冯.诺依曼
„Harvard“ – 哈弗
„Von Neumann“:
数据、代码共享内存空间
数据、代码共享内存总线
Example: Intel‘s x86 Pentium Processor family
„Harvard“:
数据、代码独立存储空间
数据、代码独立存储总线SOC-微控制器 (µC)
SOC-微控制器 (µC)
用来实现实时控制的核以及输入输出接口都集成在片上
确保在嵌入式应用中的高的性价比
几乎能满足各类电子产品对运算能力和外设的要求
2种 µP – 结构 (Von Neumann 和Harvard) 广泛应用于 MicrocontrollersDSP-数字信号处理器 DSP-数字信号处理器 类似于微处理器 (µp..), 一个计算系统的核
额外的用来加速复杂运算的外设:
硬件乘法器(MPY)
算术运算单元(ALU)
多总线访问机制
实现 2n 次乘法/加法运算的硬件移位寄存器
典型的DSP算法典型的DSP算法乘加运算的实现- µP乘加运算的实现- µP使用PC、通用的C代码编译器例如Visual.Studio.Net实现
代码实例:
#include
int data[4]={1,2,3,4};
int coeff[4]={8,6,4,2};
int main(void)
{
int i;
int result =0;
for (i=0;i<4;i++)
result += data[i]*coeff[i];
printf("%i",result);
return 0;
}
6个基本操作6个基本操作CPU将要执行的操作?
设置指针1指向 data[0]
设置指针2指向 coeff[0]
读data[i] 到内核
读coeff[i] 到内核
MPY data[i]*coeff[i]
做加法运算
修改指针1
修改指针2
自增;
如果 i<3 , 返回第三步重复执行
3到8 被称作“6 Basic Operations of a DSP”
DSP能够单周期执行完这6个基本操作µP的执行过程-机器/汇编码µP的执行过程-机器/汇编码Address M-Code Assembly - Instruction
10: for (i=0;i<4;i++)
00411960 C7 45 FC 00 00 00 00 mov dword ptr [i],0
00411967 EB 09 jmp main+22h
00411969 8B 45 FC mov eax,dword ptr [i]
0041196C 83 C0 01 add eax,1
0041196F 89 45 FC mov dword ptr [i],eax
00411972 83 7D FC 04 cmp dword ptr [i],4
00411976 7D 1F jge main+47h
11: result += data[i]*coeff[i];
00411978 8B 45 FC mov eax,dword ptr [i]
0041197B 8B 4D FC mov ecx,dword ptr [i]
0041197E 8B 14 85 40 5B 42 00 mov edx,dword ptr[eax*4+425B40h]
00411985 0F AF 14 8D 50 5B 42 00 imul edx,dword ptr[ecx*4+425B50h]
0041198D 8B 45 F8 mov eax,dword ptr [result]
00411990 03 C2 add eax,edx
00411992 89 45 F8 mov dword ptr [result],eax
00411995 EB D2 jmp main+19h (411969h) 乘加运算的实现-DSP乘加运算的实现-DSP使用DSP硬件平台以及Ti的C编译器来实现
代码实例:
int data[4]={1,2,3,4};
int coeff[4]={8,6,4,2};
int main(void)
{
int i;
int result =0;
for (i=0;i<4;i++)
result += data[i]*coeff[i];
printf("%i",result);
return 0;
}DSP的执行过程-机器/汇编码DSP的执行过程-机器/汇编码Address MCode Assembly Instruction
0x8000 FF69 SPM 0
0x8001 8D04 0000R MOVL XAR1,#data
0x8003 76C0 0000R MOVL XAR7,#coeff
0x8005 5633 ZAPA
0x8006 F601 RPT #1
0x8007 564B 8781 ||DMAC ACC:P, *XAR1++,*XAR7++
0x8009 10AC ADDL ACC,P<> 4;
}
ADC的低功耗方式ADC的低功耗方式 电源级别 ADCRFDN ADCBGND ADCPWDN
ADC加电 1 1 1
ADC掉电 1 0 0
ADC关闭 0 0 0
保留 1 0 x
保留 0 1 x1、给ADC模拟电路的其他部分家电前,给参考电路和带隙
电路加电
2、ADC完全加电后,需要等待20s,才能进行第一次抓换。
3、ADC掉电,3位被同时清除。通过软件设置。null第五部分:F2812数字通信接口(SPI/SCI)SPI 模块特点SPI 模块特点4个外部引脚:SPISOMI/SPISIMO/SPISTESPICLK
2种工作模式:主工作模式、从工作模式
波特率:125种不同的可编程速率
16级发送和接受FIFO
4种时钟配置方法(由时钟极性和时钟相位控制)
不带相位延迟的下降沿:SPI在SPICLK高有效,SPI在SPICLK下降沿发送数据,上升沿接受数据
带有相位延迟的下降沿:SPICLD高有效,SPI在SPICLK的下降沿的前半周期发送数据,下降沿接受
不带相位延迟的上升沿:SPICLK低有效,SPI在SPICLK的上升沿发送数据,下降沿接受数据
带有相位延迟的上升沿:SPICLK低有效,SPI在SPICLK的下降沿的前半周期发送数据,下降沿接受数据串行外围接口SPI的工作流程串行外围接口SPI的工作流程数据同步传输和接受
SPI主设备提供时钟
SPI Device #1 - MasterSPI Device #2 - SlaveshiftshiftclockSPI 功能框图SPI 功能框图SPICLKSPISOMISPISIMOLSPCLKbaud
rateclock
polarityclock
phaseC28x - SPI 主模式LSBMSBSPI 功能框图SPI 功能框图SPICLKSPISOMISPISIMOclock
phaseC28x - SPI 从模式MSBLSBSPI 数据格式的调整SPI 数据格式的调整可编程数据长度1~16
发送数据少于16位时需要左调整
MSB 先发送
接受数据少于16位时需要右调整
用户程序屏蔽MSB11001001XXXXXXXXXXXXXXXX11001001SPIDAT - Processor #1SPIDAT - Processor #2SPI-A 寄存器SPI-A 寄存器Address Register Name
0x007040 SPICCR SPI-A 配置控制寄存器
0x007041 SPICTL SPI-A 工作控制寄存器
0x007042 SPISTS SPI-A 状态寄存器
0x007044 SPIBRR SPI-A 波特率寄存器
0x007046 SPIEMU SPI-A 仿真缓冲寄存器
0x007047 SPIRXBUF SPI-A 串行接受寄存器
0x007048 SPITXBUF SPI-A 串行发送寄存器
0x007049 SPIDAT SPI-A 串行数据寄存器
0x00704A SPIFFTX SPI-A FIFO 发送寄存器
0x00704B SPIFFRX SPI-A FIFO 接受寄存器
0x00704C SPIFFCT SPI-A FIFO 控制寄存器
0x00704F SPIPRI SPI-A 极性控制寄存器SPI-A 控制寄存器
SPICCR @ 0x007040SPI-A 控制寄存器
SPICCR @ 0x007040012765-4reservedSPI CHAR.3-0字长控制位
e.g. 0000b Þ length = 1
1111b Þ length = 16SPI SW RESET:在改变配置前清除刺位
在重新操作开始前设置此位
0 = SPI flags reset
1 = normal operationCLOCK POLARITY
0 = 上升沿输出/下降沿输入
1 = 下降沿输入/上升沿输出reserved15-83SPI-A 工作控制寄存器
SPICTL @ 0x007041SPI-A 工作控制寄存器
SPICTL @ 0x00704101215-543reserved CLOCK PHASE
0 = no CLK delay
1 = CLK delayed 1/2 cycleOVERRUN INT ENABLE
0 = 禁止接受溢出中断(SPISTS.7)
1 = 使能接受溢出中断(SPISTS.7)MASTER/SLAVE
0 = slave
1 = master TALK
0 = transmission disabled,
output pin hi-Z’d
1 = transmission enabledSPI INT ENABLE
0 = disabled
1 = enabledSPI-A 波特率寄存器
SPIBRR @ 0x007044SPI-A 波特率寄存器
SPIBRR @ 0x00704415-76-0reservedSPI BIT RATESPICLK signal =, SPIBRR = 3 to 127, SPIBRR = 0, 1, or 2SPI-A 状态寄存器
SPISTS @ 0x007042SPI-A 状态寄存器
SPISTS @ 0x007042764-0SPI INT FLAG (read only)
传输完成置1
如果 SPI INT ENA设置(SPICTL.0)
则置位
读 SPIBRXUF清零RECEIVE OVERRUN FLAG (read/clear only)
在SPIRXBUF被读取之前下一次接受完成则1
如果 OVERRUN INT ENA 被设置 (SPICTL.4)则中断请求
写1置0reservedreserved15-8TX BUF FULL (read only)
写 SPITXBUF置位
载入 SPIDAT 清零5SPI-A FIFO 发送寄存器
SPIFFTX @ 0x00704ASPI-A FIFO 发送寄存器
SPIFFTX @ 0x00704ASPI RESET
0=复位
1=无影响SPI-A FIFO 接受寄存器
SPIFFRX @ 0x00704BSPI-A FIFO 接受寄存器
SPIFFRX @ 0x00704BF2812 SPI 模块功能总结F2812 SPI 模块功能总结2种传输方式
2线
制度
关于办公室下班关闭电源制度矿山事故隐患举报和奖励制度制度下载人事管理制度doc盘点制度下载
工作方式 (半工)
3线制工作方式(全双工)
可编程MASTER/SLAVE
工作在MASTER提供主时钟
可编程数据位长度 1~16bit
125种可编程波特率长度null第五部分:F2812的串行通信接口(SCI)F2812 SCI 模块特点F2812 SCI 模块特点2个外部引脚:SCITXD/SCIRXD
2种工作模式:全双工、半双工
波特率:可编程达到64K不同的速率
双缓冲接受发送模式
16级发送接受 FIFO(发送8bit、接受16bit)
自动波特率检测硬件逻辑
2个唤醒多处理器模式
空闲线
地址位
F2812 SCI 通信模块 F2812 SCI 通信模块 SCITXBUFTXSHFSCI Device #1SCIRXDSCITXDSCITXDSCIRXDSCI Device #28SCIRXBUFRXSHF8SCITXBUFTXSHF8SCIRXBUFRXSHF8全双工SCI-A 可编程数据格式SCI-A 可编程数据格式StartLSB23457MSBParityStop 1Addr/
Data6只在地址模式种有效Stop 2NRZ (nonreturn to zero) formatStart BitLSB of Data多数表决Falling Edge DetectedSCIRXDSCICLK
(Internal)1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2Note: 8 SCICLK/每个数据位多处理器唤醒方式多处理器唤醒方式允许一个处理器在同一个串行线上有效的向其他处理器发送数据块
2种模式:地址线空闲;地址位
操作顺序
设置 SLEEP = 1, 当地址被检测的时候处理器才能被中断,软件清零
所有的传输都是以地址帧开始
接收到的地址帧临时唤醒所有BUS上的处理器
处理器比较收到的SCI地址与本身的SCI地址(匹配)
只有当地址匹配的时候处理器才开始接受数据空闲线多处理器方式空闲线多处理器方式帧内块的空闲块
在SCIRXD 变高10个位(或更多)之后, 接收器在下降沿之后被唤醒
2种发送快启动信号
前一数据块的最后一帧的发送与下一数据块的地址帧的发送之间时间延长,能产生一段10bit或更长的空闲时间
设置TXWAKE(SCICTL1.3)=1,产生11bit的空闲时间Last DataST SPSTDataSCIRXD/
SCITXD帧内块 SPSPLast DataSTAddr SP=10;>10
的空闲周期=10;>10
的空闲周期地址帧
跟随10bit或
更多位空闲周期后第一个数据帧 SPSTAddr空闲周期<10地址位唤醒方式地址位唤醒方式所有帧都包含一个额外的地址位,判决地址/数据
当地址位被检测到的时候唤醒
只要在SCITXBUF写入地址前置位TXWAKE=1,自动设置帧内数据/地址的设定Last DataSTSTDataSCIRXD/