tag 标签: 28335

相关帖子
相关博文
  • 热度 14
    2012-11-12 14:54
    5416 次阅读|
    1 个评论
    TMS320F28335 之 eCAN 1 、内嵌 CAN 控制器 TMS320F28335 内有 2 个增强型 CAN 总线控制器( eCAN ),完全兼容 CAN2.0B 标准。 图 eCAN 模块的结构 图 eCAN 模块方块图及接口电路 eCAN 是具有内部 32 位结构的 CAN 控制器。 eCAN 模块由 CAN 协议核心( CPK )和消息控制器组成,消息控制器又包括三个部分: 1 )存储器管理单元( MMU ),包含 CPU 接口电路、接收控制单元和计时器处理单元; 2 )邮箱 RAM ,可存储 32 个消息; 3 )控制寄存器和状态寄存器。 CPK 的功能是根据 CAN 协议解码所有在 CAN 总线上接收到的消息,并将这些消息转移到接收缓冲器中;根据 CAN 协议在 CAN 总线上发送消息。 消息控制器的功能是决定由 CPK 接收到的任意消息,必须由 CPU 决定是否保留或者舍弃。在模块初始化阶段, CPU 指定了程序使用消息控制器的所有消息标识符。 消息控制器的另一功能是根据消息的优先级将要发送的消息传输到 CPK 。 计时器处理单元由定时计数器组成,用于在所有接收或发送的消息中添加一个时间标记。 工作原理: 1 )当 CPK 接收到一个有效的消息后,消息控制器的接收控制单元决定该消息是否必须存储到邮箱 RAM 的 32 个消息对象里。 接收控制单元检查消息状态、标识符以及所有消息对象屏蔽寄存器,从而决定存放消息的合适的邮箱位置。接收到的消息被存储在通过接受过滤的第一个邮箱。 如果接收控制单元不能决定由哪个邮箱来存储接收到的消息,那么该消息将被舍弃。 2 )当一个消息被发送时,消息控制器传送消息到 CPK 的发送缓冲器。 在下一总线空闲状态时,开始消息的发送。 当多条消息需要被发送时,在准备发送的消息中,具有最高优先级的消息将首先由消息控制器转移到 CPK 。 如果两个邮箱具有相同的优先级,那么具有更高序号的邮箱首先被发送。 工作模式: eCAN 模块由两种工作模式, SCC 模式和 eCAN 模式。 SCC 模式是 eCAN 模式的简化功能模式,该模式只有 16 个邮箱(邮箱号 0-15 )可用;没有时间标记功能,可用的接收屏蔽寄存器数目也少。该模式为默认状态。 工作模式通过寄存器 CANMC 的第 13 位( SBC )来选择。 2 、 eCAN 模块的复用 GPIO 口设置 两个 eCAN 模块 A 、 B 对应的 IO 口设置有多种选择。 模块 A 对应的 IO 口有 GPIO30 和 GPIO31 、 GPIO18 和 GPIO19 两种选择。 模块 B 对应的 IO 口有 GPIO8 和 GPIO10 、 GPIO12 和 GPIO13 、 GPIO16 和 GPIO17 、 GPIO20 和 GPIO21 四种选择。 在 IO 口初始化时要注意一定要和实际的接口定义对应。 在 TI 的 CAN 例程中已经完整的给出了这些 IO 口的初始化语句,选择要使用的语句保留,不使用的语句注释掉即可。 3 、 CAN 通讯波特率设置 通过位时序配置寄存器 CANBTC 对通讯波特率进行设置。 设置步骤: System clock : f_sys = 150 MHz CAN clock : f_can = f_sys / 2 = 75 MHz CAN clock period : t_ can = 1 / f_ can = 13 . 3333333 ns Actual bit rate = 1 Mbit/s     Actual bit time = 1000 ns CAN bus length = 10 m, with 5 ns/m signal delay time. Propagation delay time : 2 * ( transceiver loop delay + bus line delay ) = 400 ns BRP reg = 4 BRP = BRP reg + 1 = 5 ( 5 分频) CAN time quantum :    tq = 5 * t_ can = 66.6666667 ns Actual bit time = 15 tq = 1000 ns Prop_Seg = 8 tq 400ns. Sync_Seg = 1 tq . Phase_seg1 + Phase_Seg2 = ( 15 – 8 – 1 ) tq = 6 tq Phase_seg1 = 3 tq; Phase_Seg2 = 3 tq 1. If Phase_Seg1 + Phase_Seg2 is even, then Phase_Seg2 = Phase_Seg1. If the sum is odd, Phase_Seg2 = Phase_Seg1 + 1. 2.   Phase_Seg2 should be at least 2 tq. Bit_time = Prop_Seg + Sync_Seg + Phase_seg1 + Phase_seg2 = 15 tq TSEG1 = Prop_Seg + Phase_seg1 = 11 tq TSEG1 reg = TSEG1 – 1 =10 TSEG2 = Phase_seg2 = 3 tq TSEG2 reg = TSEG2 – 1 = 2 具体参考 TI 的手册或者程序。 4 、 CAN 通讯例子 使用 USBCAN 卡和开发板进行 CAN 通讯。 设置 3 个邮箱,两个发送邮箱(邮箱号 24,25 ),一个接收邮箱(邮箱号 26 ); 发送邮箱 24 :用于发送两路 ADC 转换的结果值; 发送邮箱 25 :用于持续发送固定帧; 接收邮箱 26 :接收指定消息帧。 5 、小结 本例只是一个简单的 CAN 总线收发程序,实现了 CAN 总线的消息收发。  
  • 热度 22
    2011-12-23 00:55
    3882 次阅读|
    3 个评论
    11.为再次确保万无一失,往外置SRAM读写校验一下   12由于板子设置了从FLASH boot,FLASH内还有程序,debug 在LOAD了程序后自动复位然后运行了flash的程序,因此,符号对应不上   13.halt住CPU,然后load program,接着load 符号,于是在memory可以看到符号已经有了。   14.接着手动设置PC,然后调去入口运行程序。   15 helloworld出来了     16由于本人板子启动模式是电阻选择,不是拨码SW,默认了从FLASH启动,所以load程序后由于下面的调试设置,自动复位,然后bootloader根据GPIO跳线选择了从FLASH启动,运行了FLASH上的程序,各位可以根据自身情况自行设置,最好设置为从XINTF启动,详细请参考TI的bootloader guide。     bootloader还是要详细看的   (完)
  • 热度 20
    2011-12-23 00:38
    6518 次阅读|
    1 个评论
    DSP28335有内置256K X 16的FLASH,34K X 16的RAM,但是如果运行一个大一点的系统,如SYS/BIOS,这么小的RAM很难容纳的下,如果在FLASH中调试的话,每次都烧写FLASH让人很担心FLASH的寿命,同时速度也很龟速,让人抓狂。如果有外挂SRAM的,可以在外置的SRAM中调试程序,想起当年调试ARM的时候了~ 好,下面开始动手,以helloworld在SYS BIOS为例。 1.参考RTSC Platform Wizar http://rtsc.eclipse.org/docs-tip/Demo_of_the_RTSC_Platform_Wizard_in_CCSv4 建立一个自己的board,可以导入TI的demo板子做修改,设置好平台,cpu主频,最重要的是设置好memory map,把外置的SRAM分配好,然后把代码section放置到外置的sram空间,设置其他的data和stack,如下图。   2.建立一个helloworld的例程。   3.把自动生成的F28335.cmd文件屏蔽掉。   4.修改RTSC平台为自己的板子。   5.build 或者rebuild,查看生成的map文件,检查代码是否在外置sram地址空间内。   6.修改仿真器的gel初始化脚本,如果你不知道脚本是那个,查看下图,最好备份一个,然后修改副本。   7.在gel文件中打开XINTF就是外置SRAM允许,在reset的时候gel脚本会初始化XINTF的寄存器,这样调试系统的时候外置SRAM才可以访问。   8.查看gel文件的memory map,看外置sram是否已经map了。   9.可以debug了,控制台会提示gel的初始化的信息,如下,提示打开了XINTF。   10.再次确认一下,可以查看XINTF寄存器的内容,看看SRAM是否初始化正确。   待续(二)    
  • 热度 14
    2011-12-22 23:48
    12085 次阅读|
    1 个评论
    最近耍上了DSP,跑了个TI的系统SYS/BIOS,想弄个Hello World例程,没想到运行时候控制台啥提示都没有。 ti wiki上有篇tips for using printf,说明了这个问题的产生可能,由于是纯文字的,不好理解,这里给出图示,解决这个问题。 1.包含stdio.h这是必须的,不然编译不提示错误,但是运行时候控制台啥都没有。   2.设置堆的大小 printf需要超过400字节的空间,相对SYS/BIOS提供的System_Printf,速度慢100倍,需要1000个机器周期。 3.设置ccs提供的printf支持等级,full,nofloat,mini。 4.如果使用了SYS/BIOS而不是裸奔的话,还需要在SYS/BIOS设置堆大小。如果是在任务中调用printf,因任务有自己独立的堆栈,还需要设置任务自己的堆栈大小。 这样Memory模块的实际堆大小以系统默认设置的为准。   最后 ,在这个c2000,c28系统中,char的单位是16bit双字节,int是16bit,long才是32bit,如果要打印32bit的数据,需要加上%l参数在打印格式字符中,%d,%f只能打印16bit的数据,打印32bit的数据会只保留高字节的数据,看下图。   忘了一点,调试选项中,CIO一定要打开。
相关资源
  • 所需E币: 1
    时间: 2023-6-20 13:23
    大小: 795.82KB
    上传者: 张红川
    tps767d301(产生3.3V与1.9V给28335).pdf
  • 所需E币: 3
    时间: 2023-3-13 13:40
    大小: 599.74KB
    上传者: 张红川
    一款28335核心板,包含原理图和Pcb
  • 所需E币: 0
    时间: 2022-3-4 21:26
    大小: 307.01KB
    上传者: samewell
    28335设计指南.zip
  • 所需E币: 0
    时间: 2022-3-4 21:25
    大小: 261.84KB
    上传者: samewell
    28335技术资料与原理图.rar
  • 所需E币: 3
    时间: 2019-12-24 14:25
    大小: 215.61KB
    上传者: 238112554_qq
    28335编译时解决WARNING_invalid_compiler_option_--float_support=fpu32以下内容是在mathwork的网站上看到的,对使用28335时的ccs设置有一定的参考价值,之前在hellodsp也看到过一篇“ccs3.3设置(针对28335)”的文章,无奈里面一些字符显示不全,我一直不得要领,看了下面的内容我才把CCS设置好了。希望能给大家有一定的参考价值,主要内容就是红字的部分南京研旭电气科技有限公司介绍dsp知识,为大家提供最新的dsp资讯,更多内容可以去南京研旭电气科技有限公司的官网www.njyxdq.comwww.f28335.com或者官方论坛,嵌嵌dsp论坛www.armdsp.net进行交流学习欢迎大家收听嵌嵌dsp论坛的官方微博http://t.qq.com/qianqiandsp还需要什么dsp资料欢迎加QQ:1318571484以下内容是在mathwork的网站上看到的,对使用28335时的ccs设置有一定的参考价值,之前在hellodsp也看到过一篇“ccs3.3设置(针对28335)”的文章,无奈里面一些字符显示不全,我一直不得要领,看了下面的内容我才把CCS设置好了。希望能给大家有一定的参考价值,主要内容就是红字的部分WhydoIreceivea"WARNING:invalidcompileroption--float_support=fpu32"messagewhentryingtobuildmycodewithTargetSupportPackageTC23.0(R2008a)?DateLastModified:Friday,January8,2010SolutionID:1-7N1VKQProduct:TargetSupportPackageT……