EDN首页   博客首页

1

关于投票
发一个coldfire(52235)UART中断的工程
程序好使的,FLY6朋友看来对UART有点疑问,这样我把我调试过的程序拿过来,里面内容不多也不难,我就不注释了哈。呵呵。
点击下载
系统分类: 单片机
用户分类: Coldfire
标签: 无标签
来源: 原创
发表评论 阅读全文(336) | 回复(9)

1

关于投票
在codewarrior环境中看汇编指令机器码和机器码查询表的使用(图)
有时候查询机器码是很有用的,这里汇编语言编程调试使用codewarrior 4.6版,在全片仿真调试界面右上角的Assembly窗口点右键,选择“display”然后选择“code”就可以在窗口中看到机器码了。如下图所示:
点击看大图
图1 操作说明
其实不必每条指令都这样查询,在官方给的CPU12指令机器码表上,可以查到所有指令的机器码。
以上图中“LDX #1”为例。
在机器码表1中,可以看到LDX指令位于倒数第二行最后4个,而我们很清楚这条语句为立即数寻址,这样的话我们看到这4个中的第1个如下:
CE   2
  LDX
IM   3

这个表的含义如下:CE表示该指令机器码,2表示指令执行的机器周期,IM表示立即数寻址,3表示语句整个指令所占的字节数。这样就知道了除了CE后面还有2个字节的内容,这两个字节的内容显然就是需要传递给寄存器X的参数,当然也就是十六进制的0001了,所以这条语句的机器码是“CE0001”。
其他指令的查询大同小异,在这里就不多说了。


系统分类: 单片机
用户分类: Coldfire
标签: 9S12 汇编
来源: 原创
发表评论 阅读全文(569) | 回复(0)

1

关于投票
最近冷火系列处理器进展情况。
回复bluehacker:
  我们这里准备和freescale合作建立一个实验室,我主要负责coldfire这块,板子出来主要用于研究生/本科生教学和做科研用。我目前弄的这个板支持情况是这样的:
MCF52235 EVB
板载USB接口的TBLCF BDM
8路发光二极管显示
4路按键中断或IO输入
1路复位
1路无源蜂鸣器
BDM接口引出
4位八段数码管显示
以太网接口
CAN总线
1路RS-422总线
1路RS-232总线
1路IIC温度传感器
MMA7260加速度传感器AD转换
1路电位器AD转换
未使用引脚引出

我们现在使用的芯片是MCF52235,这个片子主要优点是外设丰富,PCB好做,QFP封装的。运行在60MHz PLL频率下。
freescale的coldfire处理器绝对是稳定性强的,包括以前的老9S12(我们也在用),9S08(也在用)都具有相当好的稳定性,但是功耗大了点,我的板子使用USB供电根本拖不起来。
我们现在在coldfire上运用还是限于QFP贴片封装的, 比如5213,52233/4/5,5249等等,现在我也有52233的板(自己做的碗),52233demo,5272华恒的,52235目前这个给BOSS做的。
如果用MCF5407做工业控制板是个不错的选择。5407资料还没看过,外设应该是不错的。
系统分类: 单片机
用户分类: Coldfire
标签: MCF52235 COLDFIRE
来源: 原创
发表评论 阅读全文(401) | 回复(6)

1

关于投票
继续做板,MCF52235的第二板,累!
把活赶出来了,第一版其实问题也不大,主要存在两个问题。
1、按键封装。第一次用贴片的按键,结果还是搞错了,不应该;
2、用板载BDM调试其他板子的问题,本板还带电,这个不应该,做了个插针选择,拨码太占地方且不好看。

其他都应该没什么问题了。

新版在局部布局上微调,板子大了一些,四角加了定位孔,休整以上问题。点击看大图
系统分类: 单片机
用户分类: Coldfire
标签: MCF52235 EVB 实验板
来源: 原创
发表评论 阅读全文(309) | 回复(4)

1

关于投票
发个新贴贴原理图,昨天发的竟然无法下载不知道为什么。
见附件,具体内容请见这个文章的上一篇。pdf
系统分类: 单片机
用户分类: Coldfire
标签: MCF52233 SCH
来源: 原创
发表评论 阅读全文(311) | 回复(2)

1

关于投票
[抛个重磅炸弹]自己画的MCF52233 80pin的准最小系统原理图。
绝对不可能有重复的,网上资料很少,参考得很少,这个板我已经做好了,事实证明是好用的,配合我自己的BDM,安逸安逸!!!
大家按照这个图画好,做出PCB加工,申请上样片,买几个电容电阻什么什么,焊上,一个32位的开发平台就出来了。
我自己的板数量有限,如果有朋友急用可以考虑买我的,不过我们的片子数量众多,来源不同,所以成本较高,这里还是希望朋友们自己做板了。
另外,原理图提供PDF的,如果需要sch的,至少请拿一个其他有价值的原理图和我交换一下,大家一起交流,谢谢!
点击下载
系统分类: 单片机
用户分类: Coldfire
标签: MCF52233 DEMO 最小系统 原理图 下载
来源: 原创
发表评论 阅读全文(426) | 回复(6)

0

关于投票
应朋友要求发原理图。
目前五一放假,原理图不在手边。至于coldfire系列MCU开发系统的原理图,我个人认为官方给的demo和EVB的原理图就足够了,可能有些朋友还不知道官方已经给了,或者没有下载到。这里上传一个,随后再把我自己做的小系统原理图放上来。

点击下载
系统分类: 单片机
用户分类: Coldfire
标签: coldfire MCF52235 EVB 原理图
来源: 整理
发表评论 阅读全文(379) | 回复(2)

0

关于投票
UDP协议(*转自中国协议分析网)
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。   与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。   UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。 UDP报头 UDP报头由4个域组成,其中每个域各占用2个字节,具体如下: 源端口号 目标端口号 数据报长度 校验值   UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。    数据报的长度是指包括报头和数据部分在内的总的字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报 的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会 降低到8192字节。   UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。 UDPvs.TCP   UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。   与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。   相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。例如,一个位于客户端的应用程序向服务器发出了以下4个数据报 D1 D22 D333 D4444 但是UDP有可能按照以下顺序将所接收的数据提交到服务端的应用: D333 D1 D4444 D22 事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。 UDP协议的应用   也许有的读者会问,既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。   关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,会面质量)。这就是UDP和TCP两种协议的权衡之处。根据不同的环境和特点,两种传输协议都将在今后的网络世界中发挥更加重要的作用
系统分类: 单片机
用户分类: Coldfire
标签: UDP协议 TCP协议
来源: 转贴
发表评论 阅读全文(436) | 回复(0)

1

关于投票
上传一个比较全的MCF5282调试资料.

包括简单的介绍,功能模块(尤其是定时器),串行通信,开发环境CODEWARRIOR代码编写编译说明.还有点z变换的基础知识.

rar

系统分类: 单片机
用户分类: Coldfire
标签: coldfire codewarrior mcf5282
来源: 原创
发表评论 阅读全文(568) | 回复(1)

1

关于投票
ColdFire 32位微控制器学习系列七-使用中断.txt
ColdFire 32位微控制器学习系列七-使用中断.txt

COLDFIRE系列处理器的中断使用和其他单片机(如9S12)并不相同,可以说功能更加强大,但是使用起来要复杂些。在FREESCALE论坛上,问的最多的问题也就是“进不了中断的问题”,这也是COLDFIRE入门学习最棘手的问题之一。
在COLDFIRE上使用中断的流程基本是这样的:

写SR开全局中断--->设置某中断LEVEL和PRIO,写屏蔽码--->编写中断服务程序,写中断向量表--->初始化并运行程序

以下代码均以使用PIT0产生每100ms一个中断为例。
1、写SR开全局中断:
    这个功能其实完全可以通过一句话来完成,在这里,必须写SR的16/17/18三位为0,才可以打开全局中断。这是初学者容易忽略和犯错误的问题。有些朋友已经设置好中断优先级和等级,打开屏蔽,初始化好并且做好向量表,发现还是无法进入中断,问题就是出在了这里。
    大家需要注意的是,COLDFIRE单片机开始运行时,SR中16/17/18三位的值都是1,这样是关闭了所有中断的,所以要使用中断,必须把这三位都设置为0,这就相当于一个总闸,如果你总闸不开,你怎么设置中断都是不能够运行的。
    用这句话来实现:
    asm{ move.w    #0x2000,SR };
    有了这句话写在MAIN函数的首位,全局中断就打开了。

2、设置中断LEVEL和PRIO:
    COLDFIRE可以管理中断的LEVEL和PRIO,必须设置它才可以使中断工作。这点的具体内容可以在DS的中断控制器那章找到。在这里就不再具体讲了,以PIT0为例,代码如下:
 MCF_INTC0_ICR55 = MCF_INTC_ICR_IL(0x3) |
               MCF_INTC_ICR_IP(0x3);
    这里设置的中断LEVEL为3,中断PRIO为3,这个都是用户可以指定的。设置好LEVEL和PRIO,还必须打开中断屏蔽码,否则中断也无法工作了。以PIT0为例,代码如下:
 MCF_INTC0_IMRH &= ~MCF_INTC_IMRH_INT_MASK55;
 //Open the local mask
 MCF_INTC0_IMRL &= ~MCF_INTC_IMRL_MASKALL;
 // Open the maskall
    这样这部分工作就完成了。
3、编写中断服务程序,写中断向量表:
    中断服务程序中一般要清除中断标志,这点人人皆知了,但是在CW IDE 6.3/4中,声明中断服务程序有一个格式,以PIT0为例,必须写成:
    __declspec(interrupt:0) void PIT0_isr(void)
    {
        ……
    }
函数名可以自己起。跟9S12使用interrupt关键字有所不同。
    另外需要写中断向量表,一般在“xxxx_vector.s”文件中,到对应位置,把定义的中断服务程序名写入。这里要注意的是,函数名前必须加下划线“_”,这个是指对应的汇编程序,代码如下:
vector117:    .long    asm_exception_handler
vector118:    .long    asm_exception_handler
vector119:    .long    _PIT0_isr
vector120:    .long    asm_exception_handler