TMS320F28335经验若干要点

上传人:飞*** 文档编号:30437043 上传时间:2021-10-10 格式:DOCX 页数:18 大小:45.28KB
收藏 版权申诉 举报 下载
TMS320F28335经验若干要点_第1页
第1页 / 共18页
TMS320F28335经验若干要点_第2页
第2页 / 共18页
TMS320F28335经验若干要点_第3页
第3页 / 共18页
资源描述:

《TMS320F28335经验若干要点》由会员分享,可在线阅读,更多相关《TMS320F28335经验若干要点(18页珍藏版)》请在装配图网上搜索。

1、TMS320F2833SF发过程中常见问题总结1.SPI驱动TLE7241E出现返回值不对的问题。主要是由于时序 的不对,导致TLE7241獭入采样时数据还没有建立,所以 TLE7241E 收到的命令不正确,所以返回值不正确。2.SPI驱动EEPRO眈,如果用金属物触到 clock pin 时,能正 确运行,否则不能正确运行。出现次问题也是由于时序的问题,金属 物触到clock导致clock出现微小幅度的偏移,导致正好和 eeprom 的时序对上,而不用金属物触碰时时序不正常,当使dsp MOSIpin数据发送提前半个周期后,eeprom工作正常。3.示波器有时会导致显示的波形被消尖,所以用示

2、波器测量时周 期不能太大。TMS320F2833旄记-I2C1.响应和非响应的区别是什么?关于i2c的响应问题:对于每一个接收设备(从设备,slaver ), 当它被寻址后,都要求在接收到每一个字节后产生一个响应。因此, the master device必须产生一个额外的时钟脉冲(第九个脉冲)用 以和这个响应位相关联。在这个脉冲期间,发出响应的从设备必须将SDAi低并在时钟脉 冲的高电平期间保持住。这表示该设备给出了一个 ACK如果它不拉 低SDAa,就表示不响应(NACK。另外,在从机(发送方)发送完最后一个字节后主设备(接收方)必 须产生一个不响应位,用以通知从机(发送方)不要再发送信息

3、了, 这样从机就知道该将SDAW放了,而后,主机发出一个停止位给slaver。总结下,i2c通讯中,SDA和SCL都是有主机控制的,从设备 只是能够将SDAa拉低而已。对于SCL线,从机是没有任何能力去控 制的。从机只能被动跟随SCL再说的清楚些:主机发送数据到从机的状态下:主机控制SCL信 号线和SDA言号线,从机只是在SCLt为高的时候去被动读取SD磁。 主机读取从机的数据:主机来发出时钟信号,从机只是保证在时钟信 号为高电平的时候的SDA勺状态而已。SDA和SCL已经通过上拉电阻被上拉,master可以控制(拉低或 者释放)这两条线,而slaver只能控制SD峨。当master发送数据

4、时,master会适时地将SD街口 SCL拉低或释放(拉高)。确切的时序 应该是这样的:当mater要发送一个start时,mater会将SDAfe低, 这就可以了,因为此时的SCL一定是High。好了,一个start就这 样发出去了。而slaver也会发现这个start信号的发生,slaver便 会准备好接收接下来的数据了。紧接着,master要发送一个Byte的数据了,一位一位的发出这8个bits。这时master会先将SCL拉低, 然后在SCL为低的状态下将一个bit准备好放到SDAk (比如要发送 一个0 , master就会通过拉低SD袜放好这个0),然后master会 把SCL拉高

5、(释放),此时slaver会立刻检测到SCL的变化,由此 聪明的slaver便知道master已经将要发送的那个bit准备好了, slaver便会在这个SCL的高电平期间尽快(maser不会等你很久的哦) 去读取一下SDA嗯读到了一个0, slaver就把这个0放到自己的移 位寄存器中待后续处理。master会在一个设定女?的时间后把 SCL再 次拉低,然后在SCL为低电平期间把下一个bit放到SDA1,然后再 把SCL拉高,然后slaver在SCL的高电平期间再去读 SDA。 如此反复8次,一个Byte的传输便告结束。当这8个bit发完后, SCLH:处于低电平的(被master拉低的),S

6、DA1:出于高电平的(master 已经释放了 SDA当一个字节发送完毕后,master会释放SDA(拉高)并拉低SCL 此时slaver如果打算发出一个ACK勺话,它必须在这个SCLM master 拉低的短暂时间内去主动将 SD砒低并保持住(此前我们说过,SDA 此时已经被master释放,所以slaver才有机会去拉低这个SDA master会在一个确定的时间后再次将 SCL拉高,并在拉高的期间去 读取SD蹴的状态,如果读到低电平,则认为收到了来自 slaver的 响应(ACK ,否则认为slaver没有响应(NACK刚才发送的那一个 Byte。这个过程就是我们说的i2c通讯中的第9个时

7、钟周期。当master 读完这个ACK/ NACKW,会再次将SCL拉低,用以通知slaver :第 9个时钟周期已经结束,你现在可以释放SDAT。而此时master也可以向SDA1准备下一个Byte的第一个bit。继而重复上述过程。或者,master也许想在接下来发送一个stop过去,那么master会在这个SCL为低的时间内将SD砒低,而后再将SCL拉高,在SCL为高的期间再将SDAW放(拉高)。这样,一个STO他就产生了。你会发现此后的SD街口 SCL都是高,这就是是所谓的总线空闲了!一句话:SCL是单向白m,由master控制。而SDAM双向的,master 可以控制,slaver也可

8、以控制。2.示波器探头会对波形产生影响,导致波形延时,使用 是请注意。TMS320F28335习笔记-ADC控制器1 .ADC的工作模式有哪些?同时采样模式和顺序采样模式。2 .ADCINT与SEQ1INT SEQ2INT中断有什么区另SEQ1INT和SEQ2INT寸应序歹U器SEQ伟口 SEQ涉中断,ADCINT 为了向前兼容F281x系列的AD5断,可以由SEQ械SEQ2虫发产生。 在ADCINM断服务程序里,需要软件干预去根据对应标志位确定到 底是哪个序列产生了中断,而 SEQINT1&2不需要的。TMS320F28335t己-启动过程1 .DSP reset后运行的起始地址是多少?0X

9、3FFFC02 .仿真器烧写程序的步骤是?根据cmd文件把程序烧到指定位置,然后执行。3 .DSP的Flash启动过程是什么?首先硬件配置GPIO8487k拉为1,即处于Flash启动过程。当 DS限位后,会从复位向量0X3FFFCO取得复位向量,并跳转到 InitBoot 处开始执行,InitBoot会读GPIO8487勺值发现全为1判 断为Flash启动方式。然后会跳到0X33FFF6处执行。在CCS5.2工程 的cmd文件中有如下代码:MEMORYPAGE 0:BEGIN: origin = 0x33FFF6, length =0x000002/* Boot to M0 will goh

10、ere*/. SECTIONScodestart: BEGINPAGE = 0即表示把codestart段放到0x33FFF6位置处,文件 “DSP2833x_CodeStartBranch.asm” 中有 codestart 段的定义,实际 上codestart段只是包含了一个跳转指令,是程序跳转到 _c_int00 处,_c_int00 在 boot.asm in RTS library 中有定义,_c_int00 的 代码最终会调用c的main函数,之后就是main函数的执行。4 .F28335如何烧写代码到 flash 中并运行?首先使用添加C:ticontrolSUITEdevice

11、_supportf2833xv133DSP2833x_comm oncmdF28335.cmd。止匕文件即为配置代码至U flash中的TI官方配置 文件。然后参考C:ticontrolSUITEdevice_supportf2833xv133DSP2833x_exam ples_ccsv4flash_f28335 。添力口以下代码:MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);将一些在内存中运行的代码从 flash复制到内 存中,然后程序才能正常运行。5 .写好的代码再ram中能正常运行但是烧写到 flash

12、中后, 函数DSP28x_usDelay()不能正常运行为什么?因为在 DSP2833x_usDelay.asm中有.sect ramfuncs,即把该 函数定义在段ramfuncs中,而此段需要在内存中运行,故需要使 用函数MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);将ramfuncs段复制到内存中然后运行。只算以 这样设计是因为函数DSP28x_usDelay()精准运行对运行速度有要求 故必须放在段ramfuncs”中。参考:6 . cmd中以下代码如何解释?ramfuncs:LOAD = FLASHD

13、,RUN = RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoa dEnd),RUN_START(_RamfuncsRu nStart),PAGE = 0第1行表示该段的装载在 PAGA0勺FLASH叶第2行表示该段的运行地址在 PAGE0勺RAML冲LOAD_ START(_RamfuncsLoadStart泠编译器创建了一个变量 RamfuncsLoadStart ,该变量指向段ramfuncs的装载地址的首地址(LOAD_ START编译伪指令,请见CCS勺帮助文档);LOAD_ START(_RamfuncsLoadEn

14、d)编译器创建了一个变量 RamfuncsLoadEnd该变量指向段ramfuncs的装载地址的末地址(LOAD_ END;编译伪指令,请见CCS勺帮助文档);LOAD_ START(_RamfuncsRunStart泠编译器创建了一个变量 RamfuncsRunStart,该变量指向段ramfuncs的运行地址的首地址(LOAD_ START编译伪指令,请见CCS勺帮助文档);从第1和2行可以看出,段ramfuncs中的函数DSP28x_usDelay() 的装载地址和运行地址是不同的,本程序中装载在Flash的块FLASHD 中,而在SARAM L呻运行,这只是目标,实际运行时 DS阴不会

15、自 动将Flash中的代码拷贝到SARAMK因此需要手动添加代码来完成。在 C函数中,为了使用变量 RamfuncsLoadStart、RamfuncsLoadEnd 和RamfuncsRunStart,必须先声明,本工程在文件 DSP2833x_GlobalPrototypes.h 中做了如下声明:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;然后就可以使用了。在Main.c中,使用MemCopy(两数将段ramfuncs 中的函数 DSP28x_usD

16、elay()的代码从装载地址 RamfuncsLoadStart 一RamfuncsLoadEn那贝至U RamfuncsRunStart 开始的 SARAM?间中。之后在程序运行时,只要调用 DSP28x_usDelay()函数,都会自动地 指向SARAW相应的函数入口地址,这一点是自动完成的。MemCopy() 函数原型在 MemCopy.卵,DSP2833x_GlobalPrototypes.h 声明。7 .如何将一个函数放到ram中运行?参考TI公司头文件中自带InitFlash 函数,这些函数会以 CODE_SECTION明。如:#pragma CODE_SECTION(InitFl

17、ash,ramfuncs);TMS320F28335t 己-中断1.如何开启某个中断?设置中断向量。例如:PieVectTable.WAKEINT = &wakeint_isr;打开 PIE 控制器。PieCtrlRegs.PIECTRL.bit.ENPIE = 1;使能PIE中对应外设的中断(相应group的相应pin)。例如:PieCtrlRegs.PIEIER1.bit.INTx8 = 1;使能 CPU勺相应中断(INT1INT12) IER |= M_INT1;使能CPU向应中断 日NT;参考网址:2.中断标志有几级?作用是什么?中断标志主要有三级 CPU(有16个标志位)、PIE (

18、有12组每 组有12个标志位)和外设(有的外设没有)。标志位在中断发生后 锁存中断状态,即表示中断发生。在 CPU向应中断后,会自动清除 cpu级别的标志位IFR bit ,同时将INTM bit置位,以防止其它中 断的发生;CPUS从PIE中取中断向量时PIE会自动清除PIE级别的 标志位PIEIFRx.y。所以在进入中断处理程序后除了外设所有中断位 都已经清除。而中断处理程序中需要清除 PIEACK和外设的中断标志 位(如果有的话)。参考网址:http:/www.deyisupport.eom/question_answer/f/56/t/13047.asp xTMS320F28335t己

19、-SPI 模块什么是spi接口?SPI接口是高速同步串行输入输出接口。TMS320F28335WTL个 SPI 接口模块?有一个专门的SPI模块,另外两个McBS池可以配置为SPI接 口。TMS320F28335SPI接口由几组寄存器控制?12 组,位于控制寄存器帧0x7040h开始的位置。所有的寄存器 都为16bit寄存器FIFO有几级?16级SPI FIFO模式下如何对传输和接收FIFO进行操作?直接对SPITXBUFS行赋值以传输数据例如:SpiaRegs.SPITXBUF=sdatai。此操作可理解为:首先使 TXFIFO头 指针加1,然后把值写入TXFIFO头指针指向的位置。如果当前

20、没有一个激活的传输过程时,对 SPITXBUF勺写入会激活一 个传输过程。直接t取SPIRXBUF勺值以接收数据例如:rdatai=SpiaRegs.SPIRXBUF ,此操作可理解为:首先从 RXFIFO 指针处读取1个word,然后使RXFIFZ指车t减1。SPI FIFO模式下传输和接收中断何时产生?是在数据传输或接收结束后,再判断传输和接收FIFO队列中有多少数据(SPIFFTX.TXFFST4-解口 SPIFFRX.RXFFST4-0勺值)。对于 传输FIFO如果FIFO中数据小于等于TXFFIL4-0 (此寄存器指定临界 值)指定的值时会触发中断,在中断处理例程中继续传输数据。对于

21、 接收FIFO如果FIFO中的值大于等于RXFFIL4-0中指定的值时触发中 断,在中断处理例程中接收数据。故 FIFO模式下中断触发条件除了 标准SPI模式下的数据传输接收完毕的条件外还要满足FIFO中的数据小于等于TXFFIL或大于等于RXFFIL设定值的条件,在两个条件都 满足的情况下才会触发中断。另外一般情况下,FIFO模式SPI初始化完后会立即产生以个传输中断,因为此时TXFIFO没有数据满足产生中断的条件。如果只接收数据不发送数据如何激活接收过程?SPI的的接收过程必须依赖传输过程,故即使值接收数据也必须对SPITXBUF!入以激活一个传输过程来接收数据。TMS320F28335t

22、 己-McBSpf块I.McBSP接口总共有几个?每个 McBS眼口有几根 pin ?TMS320F28335总共有两个 McBS酸口。每个接口有六根pin,分 另U是:MFSX MFSR MCLKX MCLKR MDX MDR2 .McBSP用于SPI模式时使用那些 pin ?他们和标准 SPI pin 的对应关系是什么?SPICLK-MCLKXSPISIMO-MDXSPISOMI-MDRSPISTE-MFSXSPITXINT-SPIRXINT-3 .McBSP如何开启 clock stop mode 以兼容 SPI 接口?通过CLKSTPCLKXPF口 CLKR亦配置时钟的极性和延时的 S

23、PI兼 容模式。DSP2833附F发笔记1 .如何查看CCS5.2中包含的源文件有哪些 ?以及他们的位 置?CCS5.2工程中C语言源文件有两部分组成,一部分是在project 路径下的.c文件,另外一部分是通过连接添加到工程里的(.project文件中的 字段)。因止匕 CCS5.2 中的源文件一部分在工程目录下,另外一部分在.project文件中的 字段包含的路径下。2 .CCS中GEL文件的作用是什么?ccs 的gel语言是一种交互式的命令,它是解释执行的,即不能 被编译成可执行文件。它的作用在于扩展了 ccsstudio的功能,可以 用gel来调用一些菜单命令,对DSP勺存储器进行配置

24、等等。但是作 者建议对于使用仿真器和 DS的能板的仿真环境用户来说,这种 GEL 语言文件是没必要加入到配置中的。gel语言的重要性在于针对计算 机模拟环境的用户,使用gel可以为其准备一个虚拟的DS昉真环境, 但也不是非用不可的。3 .引用例子中的源文件时要注意什么?使用CCS5.2导入例子中的源文件时,最好不要选择连接方式, 而使用复制的方式,这样必要时可以更改这些源文件,而不会影响其 他的程序的使用。4 .CCS5.2如果没有包含函数的声名头文件时也能运行但是 结果会不正常,故当函数调用由现莫名其妙的问题时,要检 查声名函数的头文件是否包含 。5 .CCS5.2开发DSP283351序时

25、如何设置程序堆栈的大小?CCS5.2默认情况下堆栈的大小都为0x400,在Project-Properties-Build-C200 Linker-Basic Options 下设 置。设置完堆栈的大小后,还要在 cmd文件中分配堆栈存储空间的段的位置和大小,栈空间的段名为.stack用于函数中的临时变量,堆空间的段名为.sysmem用于c语言malloc函数分配内存,malloc 最大可分配内存为 Project-Properties-Build-C200 Linker-Basic Options下设置的大小减2。cmd文件中的堆栈段的大小不能小于 Project-Properties-Bu

26、ild-C200 Linker-Basic Options 下设置的大小。一般来讲不用变动栈空间的大小和位置,如果函数中需要大的空间就申请堆空间。堆空间可以指定为外部内存,但要注意在第一次malloc函数调用之前一定要初始化外部内存。否则 malloc能执行成功但是空间指向未heap 大小限制为 32k word 即 0x10000。6 .相关参考网站7 .如何添加头文件的相对路径?首先在 Project-Properties-Build 选项下,点击 Variables添加一个变量,然后就可以在 Project-Properties-Build-C2000Compiler-Include O

27、ptions 下用 $引用变量。表示工程路径的系统变量是PROJECT_ROOT以在Project-Properties-Build-C2000 Compiler-Include Options下直接引用。注意 Project-Properties-Resource-Linked Resources 下的变量在Project-Properties-Build-C2000 Compiler-Include Options 下无效,只有 Project-Properties-Build 下 Variables 选项卡中 的变量才能用。 ptions8 .当程序烧写到flash中运行时,设置断点为什

28、么总是由 错?当程序烧写到flash中时设置的断点为硬件断点,此断点对C28x 系列DSPR能设置两个多的话就会报错,另外有些函数有可能会占用 硬件断点,故设置断点失败时可查一下如何清理c函数的硬件断点。9 .CCS5 Debug模式下Tool-Graphs 的用法的要点?进入CCSDebug模式,点击debug按钮右边的小箭头打开下拉列 表,选中 Debug Configurations, 在 target 选项卡下选择 Realtime如果不Options-Halt the target before any debugger access选此项当target running 时,grap

29、h波形会是一条为。的直线。在代码中打断点,运行到断点处,因为只有运行在断点处 Graphs 才能识别变量地址,才能在设定Start Address时使用数组名和& 变量名的形式。Graphs只能跟踪全局变量,所以缓冲区要设置为全局变量。参考网址:.Cn/thread/214974/1 l10 .如果ccs由现莫名其妙的问题时,请删除 .metadata11 .arm和dsp之间进行串口通信如果dsp先启动,arm后启动,通讯有异常,反之正常?主要原因是arm启动时会有一个导致BRKDT昔误的信号出现,此 时如果dsp已经启动就会收到此错误,并停止工作,直到 SWRest或 者DSP启。解决方法是当收到此错误时,SW Reset SCI模块。参考网址:http:/www.deyisupport.eom/question_answer/f/56/t/11621.asp x

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!