TMS320F28335经验若干.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《TMS320F28335经验若干.doc》由会员分享,可在线阅读,更多相关《TMS320F28335经验若干.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、/TMS320F28335开发过程中常见问题总结1.SPI驱动TLE7241E出现返回值不对的问题。主要是由于时序的不对,导致TLE7241E输入采样时数据还没有建立,所以TLE7241E收到的命令不正确,所以返回值不正确。2.SPI驱动EEPROM时,如果用金属物触到clock pin时,能正确运行,否则不能正确运行。出现次问题也是由于时序的问题,金属物触到clock导致clock出现微小幅度的偏移,导致正好和eeprom的时序对上,而不用金属物触碰时时序不正常,当使dsp MOSIpin数据发送提前半个周期后,eeprom工作正常。3.示波器有时会导致显示的波形被消尖,所以用示波器测量时周
2、期不能太大。TMS320F28335笔记-I2C1.响应和非响应的区别是什么? 关于i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。因此,the master device 必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。 在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。这表示该设备给出了一个ACK。如果它不拉低SDA线,就表示不响应(NACK)。另外,在从机(发送方)发送完最后一个字节后主设备(接收方)必须产生一个不响应位,用以通知从机(发送方)不要再发送信息了,这样从机就知道
3、该将SDA释放了,而后,主机发出一个停止位给slaver。总结下,i2c通讯中,SDA 和 SCL 都是有主机控制的,从设备只是能够将SDA线拉低而已。对于SCL线,从机是没有任何能力去控制的。从机只能被动跟随SCL 再说的清楚些:主机发送数据到从机的状态下:主机控制SCL信号线和SDA信号线,从机只是在SCL线为高的时候去被动读取SDA线。主机读取从机的数据:主机来发出时钟信号,从机只是保证在时钟信号为高电平的时候的SDA的状态而已。 SDA和SCL已经通过上拉电阻被上拉,master可以控制(拉低或者释放)这两条线,而slaver只能控制SDA线。当master发送数据时,master会适
4、时地将SDA和SCL拉低或释放(拉高)。确切的时序应该是这样的:当mater要发送一个start时,mater会将SDA拉低,这就可以了,因为此时的SCL一定是High。好了,一个start就这样发出去了。而slaver也会发现这个start信号的发生,slaver便会准备好接收接下来的数据了。紧接着,master要发送一个Byte的数据了,一位一位的发出这8个bits。这时master会先将SCL拉低,然后在SCL为低的状态下将一个bit准备好放到SDA上(比如要发送一个 0,master就会通过拉低SDA来放好这个0),然后master会把SCL拉高(释放),此时slaver会立刻检测到S
5、CL的变化,由此聪明的slaver便知道master已经将要发送的那个bit准备好了,slaver便会在这个SCL的高电平期间尽快(maser不会等你很久的哦)去读取一下SDA,嗯读到了一个0,slaver就把这个0放到自己的移位寄存器中待后续处理。master会在一个设定好的时间后把SCL再次拉低,然后在SCL为低电平期间把下一个bit放到SDA上,然后再把SCL拉高,然后slaver在SCL的高电平期间再去读SDA。如此反复8次,一个Byte的传输便告结束。当这8个bit发完后,SCL是处于低电平的(被master拉低的),SDA是出于高电平的(master已经释放了SDA)。 当一个字节
6、发送完毕后,master会释放SDA(拉高)并拉低SCL,此时slaver如果打算发出一个ACK的话,它必须在这个SCL被master拉低的短暂时间内去主动将SDA拉低并保持住 (此前我们说过,SDA此时已经被master释放,所以slaver才有机会去拉低这个SDA)。master会在一个确定的时间后再次将SCL拉高,并在拉高的期间去读取SDA线的状态,如果读到低电平,则认为收到了来自slaver的响应(ACK),否则认为slaver没有响应(NACK)刚才发送的那一个Byte。这个过程就是我们说的i2c通讯中的第9个时钟周期。当master读完这个ACK / NACK 后,会再次将SCL拉
7、低,用以通知slaver:第9个时钟周期已经结束,你现在可以释放SDA了。而此时master也可以向SDA上准备下一个Byte的第一个bit。继而重复上述过程。或者,master也许想在接下来发送一个stop过去,那么master会在这个SCL为低的时间内将SDA拉低,而后再将SCL拉高,在SCL为高的期间再将SDA释放 (拉高) 。这样,一个STOP位就产生了。你会发现此后的SDA和SCL都是高,这就是是所谓的总线空闲了!一句话:SCL是单向的,由master控制。而SDA是双向的,master可以控制,slaver也可以控制。 2.示波器探头会对波形产生影响,导致波形延时,使用是请注意。T
8、MS320F28335学习笔记-ADC控制器1. ADC的工作模式有哪些? 同时采样模式和顺序采样模式。2. ADCINT与SEQ1INT、SEQ2INT中断有什么区别 SEQ1INT和SEQ2INT对应序列器SEQ1和SEQ2的中断,ADCINT是为了向前兼容F281x系列的ADC中断,可以由SEQ1或SEQ2触发产生。在ADCINT中断服务程序里,需要软件干预去根据对应标志位确定到底是哪个序列产生了中断,而SEQINT1&2是不需要的。TMS320F28335笔记-启动过程1. DSP reset后运行的起始地址是多少? 0x3FFFC02.仿真器烧写程序的步骤是? 根据cmd文件把程序烧
9、到指定位置,然后执行。3.DSP的Flash启动过程是什么? 首先硬件配置GPIO8487上拉为1,即处于Flash启动过程。当DSP复位后,会从复位向量0x3FFFC0处取得复位向量,并跳转到InitBoot处开始执行,InitBoot会读GPIO8487的值发现全为1判断为Flash启动方式。然后会跳到0x33FFF6处执行。在CCS5.2工程的cmd文件中有如下代码:MEMORYPAGE 0 : BEGIN : origin = 0x33FFF6, length = 0x000002 /* Boot to M0 will go here */.SECTIONS.codestart : B
10、EGIN PAGE = 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_supportf2833xv133DSP2833x_commoncmdF283
11、35.cmd。此文件即为配置代码到flash中的TI官方配置文件。然后参考C:ticontrolSUITEdevice_supportf2833xv133DSP2833x_examples_ccsv4flash_f28335。添加以下代码:MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);将一些在内存中运行的代码从flash复制到内存中,然后程序才能正常运行。5.写好的代码再ram中能正常运行但是烧写到flash中后,函数DSP28x_usDelay()不能正常运行为什么? 因为在DSP2833x_usDelay.
12、asm中有.sect ramfuncs,即把该函数定义在段ramfuncs中, 而此段需要在内存中运行,故需要使用函数MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);将ramfuncs段复制到内存中然后运行。只算以这样设计是因为函数DSP28x_usDelay()精准运行对运行速度有要求故必须放在段ramfuncs中。参考:http:/ ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_Ramfuncs
13、LoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0第1行表示该段的装载在PAGA0的FLASHD中第2行表示该段的运行地址在PAGE0的RAML0中LOAD_ START(_RamfuncsLoadStart)令编译器创建了一个变量RamfuncsLoadStart,该变量指向段ramfuncs的装载地址的首地址(LOAD_ START为编译伪指令,请见CCS的帮助文档);LOAD_ START(_RamfuncsLoadEnd)令编译器创建了一个变量RamfuncsLoadEnd,该变量指向段ramfuncs的装载地址的末地址(LOAD_ END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tms320f28335 经验 若干
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内