最新日志

发表于:2008-5-1 18:11:09
标签:MCP2515  ARM  CAN  

1

MCP2515的使用(二)

1.首先MCP2515的资料都在这,里面有MCP2515的数据手册,一些示例代码,有些代码是可以直接拷贝使用的。

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1999&ty=&dty=&section=&NextRow=&ssUserText=MCP2515

2.SPI指令集

MCP2515有两个接收缓冲器,三个发送缓冲器, SPI 接口。驱动的代码一部分要完成SPI接口的指令集,有表及执行时序。

 

点击看大图

相应的函数

void   MCP2515Reset  (void);                                                         //复位

uint8  MCP2515Read  (uint8 addr);                                                //

void   MCP2515ReadRXBuf  (uint8 addr, uint8 *str, uint8 num);   //RX缓冲器

void   MCP2515Write  (uint8 addr, uint8 data);                            //

void   MCP2515LoadTXBuf (uint8 addr, uint8 *str, uint8 num);    //装载TX缓冲器

void   MCP2515ReqTx  (uint8 addr);                                             //请求发送报文

uint8  MCP2515RdStus  (void);                                                     //读状态

uint8  MCP2515RxStus  (void);                                                     //RX状态

void   MCP2515BitModify (uint8 addr, uint8 mask, uint8 data);   //位修改

3.就是CAN的收发数据了,共有两个接收缓冲器,三个发送缓冲器,可以通过中断来收发数据,当发送缓冲器满或接收缓冲器有有效数据时产生中断。

BOOL CANSendMsg( int Channel, UINT16 Identifier, UINT8* Msg, UINT8 MsgSize )

BOOL CANGetMsg( int Channel, UINT16* pIdentifier, UINT8* Msg, UINT8* pMsgSize )

注意:一定要确保初始化成功,本人在调试的过程中就遇到,如果初始化没成功,程序会一会执行正确,一会不正常的情况。

     改变工作模式时,新的工作模式须等到所有当前报文发送完毕之后才生效。必须通过读取CANSTAT.OPMODE位来验证新的工作模式。

比如:

    do

    {

        MCP2515Write( MCP_CANCTRL, 0x80);        //CAN工作在配置模式

        j = MCP2515Read( MCP_CANSTAT ) & 0xF0;   //验证是否已经进入配置模式

    }while(j!=0x80);

 4.一个代码的例子
点击下载

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(109)
发表于:2008-5-1 12:31:11
标签:MCP2515  ARM  SPI  

1

MCP2515的使用(一)

MCP2515的中文资料网上有很多,此,仅讨论具体的一些使用。先看下,在用ARM(LPC21XX)做控制器的情况下,用GPIO口模拟SPI总线的代码。

1.先看下SPI总线的时序图

SPI总线有四根线,CSSCKMISOMOSI,是一种环形总线结构,如下图。

CS是片选。

SCK是串行时钟。

MISO是主输入从输出。

MOSI是主输出从输入。

时序图如下:(参照MCP2515的数据手册)

SPI的输入时序

SPI的输出时序

2.分析下

Commands and data are sent to the device via the SI pin, with data being clocked in on the rising edge of SCK. Data is driven out by the MCP2515 (on the SO line) on the falling edge of SCK.

命令和数据通过SI脚发到设备上,数据在SCK的上升沿写入。数据在SCK的下降沿SO输出

3.相应代码如下:(代码经使用是可行的,给出仅做参考)

/******************************************************************************

*名称: WriteSPI()    SPI一个字节

*功能: SPI一个字节

       P0.11            CS

       P0.12            SO

       P0.13            SI

       P1.22            SCK

******************************************************************************/

void  WriteSPI  (uint8  data)

{

    uint8 i;

    IO1CLR = IO1CLR | (1 << 22);                            //SK=0

    for ( i="0"; i<8 ;i++ )

    {   

        i = i;                                                                //延时

        if ( (data & 0x80)==0 )

        {

            IO0CLR = IO0CLR | (1 << 13);                    //SI=0

        }

        else

        {

            IO0SET = IO0SET | (1 << 13);                    //SI=1

        }

        i = i;      

        IO1SET = IO1SET | (1 << 22);                        //SK=1

        i = i;

        data = data << 1;

        IO1CLR = IO1CLR | (1 << 22);                        //SK=0

    }

}

 

/******************************************************************************

*名称: ReadSPI()    SPI一个字节

*功能: SPI一个字节

       P0.11            CS

       P0.12            SO

       P0.13            SI

       P1.22            SCK

******************************************************************************/

uint8  ReadSPI  ( void )

{

    uint8 i;

    uint32 bdata1,bdata2;

    uint8 cdata = 0;

    IO1CLR = IO1CLR | (1 << 22);                             //SK=0

    for ( i="0"; i<8 ;i++ )

    {

        i = i;                                                                 //延时

        i = i;

        IO1SET = IO1SET | (1 << 22);                         //SK=1

        cdata  = cdata << 1;

        bdata1  = IO0PIN & 0x00001000;                  //SO         

        i = i;

        bdata2  = IO0PIN & 0x00001000;

        if ( bdata1 != bdata2) return 0x00;               //验证下

        if ( bdata1)

        {

            cdata = cdata | 0x01;

        }

        else

        {

            cdata = cdata & (~0x01);

        }

       

        IO1CLR = IO1CLR | (1 << 22);                      //SK=0

    }

    return cdata;

}

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(84)
发表于:2008-3-20 10:25:57
标签:C51  XBYTE  

1

C51里面XBYTE的使用

1. 首先给个链接,C51的用户向导,http://www.keil.com/support/man/docs/c51/c51_xbyte.htm ,瞒有用。
2. 这个主要是在用C51的P0,P2口做外部扩展时使用,其中XBYTE [0x0002],P2口对应于地址高位,P0口对应于地址低位。一般P2口用于控制信号,P0口作为数据通道。
   比如:P2.7接WR,P2.6接RD,P2.5接CS,那么就可以确定个外部RAM的一个地址,想往外部RAM的一个地址写一个字节时,地址可以定为XBYTE [0x4000],其中WR,CS为低,RD为高,那就是高位的4,当然其余的可以根据情况自己定,然后通过
XBYTE [0x4000] = 57;
这赋值语句,就可以把57写到外部RAM的0x4000处了,此地址对应一个字节。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(4) | 阅读(485)
发表于:2008-3-13 13:00:28
标签:ARM  中断  

2

ARM的中断处理过程

1.   首先就是知道ARM状态下的通用寄存器和程序计数器,绿颜色的就是相应模式下的私有寄存器。就是说程序一般运行在系统和用户模式下,使用的是系统和用户模式下的通用寄存器,当有异常发生时,比如FIQ,那么系统将切换到FIQ模式下,相应的就会采用FIQ模式下的寄存器,其中绿颜色的就是只在FIQ模式下才会用到的寄存器。

2.   在模式切换的过程中,要保护系统和用户模式下的通用寄存器状态,以便在异常处理完成之后程序能正常返回。因为FIQ模式下R8-R14为其私有寄存器,所以切换的过程中,系统和用户模式下的通用寄存器的R8-R14就不用保护了,所以减少了对寄存器存取的需要,从而可以快速的进行FIQ处理,故称为FIQ


3. 异常处理的动作。当然这都是内核自己干的。以FIQ为例。
当系统进入
FIQ模式时
第一,将原来执行程序的下一条指令地址保存到
LR中,就是将R14保存到R14_fiq里面。
第二,拷贝CPSRSPSR_fiq
第三,改变
CPSR模式位的值,改到FIQ模式。
第四,改变
PC值,将其指向异常处理向量所指的下一条指令。
离开异常处理的时候
第一,将
LRR14_fiq)赋给PC
第二,将
SPSRSPSR_fiq)拷贝到CPSR
第三,清除中断禁止标志(如果开始时置位了)。


4异常中断向量
异常中断的向量地址
地址
                  异常中断类型             入口时处理器的操作模式
0x00000000        复位               超级用户
0x00000004        未定义指令         未定义
0x00000008        软件中断           超级用户
0x0000000c        中止(预取指)     中止
0x00000010        中止(数据)       中止
0x00000014        保留                              保留
0x00000018        IRQ                                IRQ
0x0000001c        FIQ                                FIQ

异常中断优先级
中断                   优先级
复位
                                     最高
数据异常
   
FIQ
IRQ

预取指异常中断
未定义指令和软件中断
        最低
5当发生IRQ中断时
第一,模式进入到IRQ里面。
第二
PC跳到0x00000018处运行。因为这是IRQ的中断入口。
第三
通过0x00000018LDR  PC, IRQ_ADDR。跳转到相应的中断服务程序。这个里面就有个确定哪个中断源的问题了。那就有优先级的问题了。每个中断源会有自己的中断服务程序。
第四,得到中断源有硬件实现和软件处理两种方式。比如LPC21XX的就是利用硬件方式,为了利用向量中断控制器的优点,IRQ中断向量入口处代码做了修改,变成
        0x00000018LDR  PC, [PC, #-0xff0]
    这条指令从内存映射地址
0xfffff030处获得数据装载到PC,这样就能够直接从硬件中获得中断源。这样就减少了中断延迟。记得,三星的S3C44B0好象采用的是用软件确定中断源,因此要建立中断向量表。好久不用了,记不清了。
第五,得到中断源,就知道要跳到哪个中断服务程序去了。
    一般都是这么定义的。
Timer0_Handler  HANDLER  Timer0 。这种格式是调用一种宏定义,目的是保护现场,跳到中断服务程序。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 原创

评论(1) | 阅读(582)
发表于:2008-3-5 15:57:02
标签:CMMI标准  

2

CMMI标准

最近在搞CMMI标准,东西还挺多。

主要内容有:
1.  CM:(Configuration Management软件配置管理。建立和维护在项目的整个软件生存周期中软件项目产品的完整性
2.  DAR:(Decision Analysis and Resolution)。应用正式的评估过程依据指标评估候选方案,在此基础上进行决策。
3.  IPM:(Integrated Project Management集成项目管理。根据从组织标准过程剪裁而来的集成的、定义的过程对项目和利益相关者的介入进行管理。
4.  Life Cycle:(Software Life Cycle Model项目管理的生命周期。关注的是项目的过程管理。
5.  MA:(Measurement & Analysis)。开发并持续发展度量能力以满足项目管理的信息需求。
6.  Milestone Review:(Milestone Review阶段评审。在阶段结束时评审项目的状态并确定项目是否应该进入下一阶段。
7.  OPD:(Organizational Process Definition组织级过程定义。建立和维护有用的组织过程资产。
8.  OPF:(Organizational Process Focus组织级过程焦点。在理解现有过程强项和弱项的基础上计划和实施组织过程改善。
9.  OT:(Organizational Training培训管理。增加开发人员的技能和知识,使他们能有效地执行他们的任务。
10.PI:(Product Integration产品集成。从产品部件组装产品,确保集成产品功能正确并交付产品。
11. PMC:(Project Monitoring and Control项目监督与控制。通过项目的跟踪与监控活动,及时反映项目的进度、费用、风险、规模、关键计算机资源及工作量等情况,通过对跟踪结果的分析,依据跟踪与监控策略采取有效的行动,使项目组能在既定的时间、费用、质量要求等情况下完成项目。
12. PP:(Project Plan项目计划。保证在正确的时间有正确的资源可用。为每个人员分配任务。协调人员。根据实际情况,调整项目。
13.PPQA:(Process and Product Quality Assurance)。为项目组和管理层提供项目过程和产品的客观信息。
14.Process Tailoring:(Process Tailoring过程裁剪。为了使组织定义的标准过程能够适合于组织项目管理,不论该项目是提供产品还是服务。
15.RD&REQM:(Requirement Management& Requirement Development)。需求管理和需求开发。需求管理的目的是在客户和软件项目之间就需要满足的需求建立和维护一致的约定。需求开发的目的在于定义系统的边界和功能、非功能需求,以便涉众(客户、最终用户)和项目组对所开发的内容达成一致。
16. Review:(Review评审。可以有效提高系统,软件及产品的质量。
17. RSKM:(Risk Management风险管理
18. Testing:软件测试
19.  VER&VAL:(Verification & Validation验证与确认Verification确保选定的工作产品满足需求规格。Validation证明产品或产品部件在实际应用下满足应用要求。
20.  TS:(Technical Solution技术解决方案

主要有几个方面的问题:过程管理,项目管理,工程管理,支持管理。每个里面对应有很多文档要完成。

过程管理

OPF&OPD:差距分析报告.doc;过程改进汇总表.xls;过程改进计划.doc

过程改进总结报告.doc;过程试用报告.doc;试用计划.xls

OT     年度培训总结.doc;培训计划.doc;培训签到表.doc;培训通知.doc

培训需求调查表.doc;培训执行情况.doc;培训总结报告.doc

人员技能记录表.xls;日语出勤情况.xls;员工请假申请单.doc

项目管理

DAR    决策分析记录表.xls

PM     软件估计表.xls;项目管理记录表.xls;项目计划.doc;项目剪裁表.xls

项目进度.xls;项目里程碑报告.ppt;项目周报.xls;项目总结报告.doc

RSKM  风险管理报告.xls

工程管理

IM     程序清单.doc;系统设计说明.doc;详细设计说明书.doc

RD     软件需求说明书.doc;需求跟踪矩阵.xls;用户功能需求说明书.doc

VER&VAL:测试计划.doc;测试用例.doc;评审跟踪表.xls;缺陷跟踪记录表.xls

项目交付报告.doc;项目验收报告.doc

支持管理

CM     变更控制跟踪表.xls;基线发布报告.doc;配置管理计划.doc

配置审计报告.xls;配置状态报告.doc;企业财富库目录.xls;项目交付报告.doc

MA     个人工作日志.xls;客户满意度调查表.xls;项目工作量统计表.xls

PPQA   质量保证计划.doc;质量保证记录表.xls;质量保证总结报告.doc

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 整理

评论(1) | 阅读(302)
发表于:2008-2-27 23:15:10
标签:Webcam  LABVIEW  USB摄像头  

1

用Webcam在LABVIEW下使用普通USB摄像头采集图像

这是网络上找的,可以支持用普通USB摄像头在LABVIEW下采集图像,前提是你USB摄像头在操作系统下驱动装了。这个Webcam据说是哪大学教授写的奉献出来的。还有个例子,是某学生写的。无私啊。感谢。

我的系统是VISTA BASIC。装的LABVIEW 8.5。普通USB摄像头。

这是代码:zip

点击此处查看原文 >>

系统分类: 虚拟仪器   |    用户分类:    |    来源: 整理

评论(1) | 阅读(627)
发表于:2008-2-27 15:15:06
标签:总线  

2

总线

总线就是部件与部件之间传输数据的公共通道。
微机中,如按位置分类,一般有内部总线、系统总线和外部总线
内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连。
系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连。
外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。
一、内部总线
    1
I2C总线。I2CInter-IC)总线。同步通信,主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。
    2
SPI总线。串行外围设备接口SPIserial peripheral interface)总线。同步串行接口。
    3
SCI总线。串行通信接口SCIserial communication interface)。通用异步通信接口UART
二、系统总线
    1
ISA总线。ISAindustrial standard architecture)总线标准。
    2
EISA总线。在ISA总线的基础上使用双层插座EISA总线完全兼容ISA总线信号。
    3
VESA总线。VESAvideo electronics standard association)总线,简称为VL(VESA local bus)总线。定义了32位数据线,使用33MHz时钟频率,最大传输率达132MB/s
    4
PCI总线。PCIperipheral component interconnect)总线。它定义了32位数据总线,且可扩展为64位。最大传输速率可达132MB/s,可同时支持多组外围设备。
    5
Compact PCI。在原来PCI总线基础上改造而来。
三、外部总线
    1
RS-232-C总线。一般用于20m以内的通信。
    2
RS-485总线。在要求通信距离为几十米到上千米时,广泛采RS-485 串行总线标准。
    3
IEEE-488总线。并行总线接口标准。最大传输距离为20米,信号传输速度一般为500KB/s,最大传输速度为1MB/s
    4
USB总线。通用串行总线USBuniversal serial bus)。快速是USB技术的突出特点。

    现场总线:现场总线是连接智能现场设备和自动化系统的数字式、双向传输、多分支结构的通信网络,它的关键标志是能支持双向、多节点、总线式的全数字通讯。 目前使用的现场总线有:
1.
基金会现场总线(Foundation Fieldbus 简称FF)。
2. CAN
Controller Area Network 控制器局域网)。
3. Lonworks

4. DeviceNet

5. PROFIBUS

6. HART (Highway Addressable Remote Transducer)

7. CC-Link
Control &Communication Link控制与通信链路系统)
8. WorldFIP

9. INTERBUS

    测量仪器总线从上世纪70年代的GPIB开始,已经经历了数代的发展。如今市场上存在着各种不同的测量仪器总线。
1. GPIB(General Purpose Interface Bus)
总线。GPIB70年代由惠普提出,然后批准成为IEEE488标准
2. VXI(VMEbus eXtensions for Instrumentation)
总线。VXI现在主要用于大型的ATE系统、航空、航天等国防军工领域。
3. PXI(PCI eXtensions for Instrumentation)
总线。199791日,NI发布了一种全新的开放性、模块化仪器总线规范——PXI
4. LXI(LAN eXtensions for Instrumentation)
总线。LXI由安捷伦科技和VXI TECHNOLOGY公司于2004年推出。
5. PCI Exrpess
PC I ExpressPCI相似。它是PCI标准的最新演进版本,相当于高速USBUSB的关系。

点击此处查看原文 >>

系统分类: 测试测量   |    用户分类:    |    来源: 整理