



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机的spi作为从设备进行通信这里运行的实例是单片机作为从设备,采用arm9作为主设备进行spi通信。arm9作为主设备,spi的通信速率最低为500k,单片机采用nec 的78f1166,晶振采用11.0592mhz时spi通信速率可以达到500k。速率匹配上没有问题。主从设备之间采用的通信协议为dl/645.这里有一个问题,协议的收发数据帧的长度是不确定的。这就涉及到主设备需要读多少个字节的数据。根据实际应用。645规约实际通信时数据帧不会超过100个字节。所以这里解决的方案是,主设备发送命令后,等待200ms后主设备开始抄读数据。这里之所以等待200ms,是因为从设备需要准备数据。以下是从设备的应用程序:unsigned char*gpcsi01rxaddress;/* csi01 receive buffer address */unsigned shortgcsi01rxlen;/* csi01 receive data length */unsigned shortgcsi01rxcnt;/* csi01 receive data count */unsigned char*gpcsi01txaddress;/* csi01 send buffer address */unsigned shortgcsi01txlen;/* csi01 send data length */unsigned shortgcsi01txcnt;/* csi01 send data count */#define bufferlen 200unsigned char spi_rx_bufferbufferlen;unsigned char txflag,rxflag;unsigned char data;unsigned long count = 0;void csi01_init( void )/* csi01 initial setting */ st0 |= sau_ch1_stop_trg_on;/* csi01 disable */csimk01 = 1;/* intcsi01 disable */csiif01 = 0;/* intcsi01 if clear */sir01 = sau_sirmn_fectmn | sau_sirmn_pectmn | sau_sirmn_ovctmn;/* error flag clear */smr01 = sau_smrmn_initialvalue | sau_clock_mode_ti0n | sau_trigger_software | sau_csi | sau_buffer_empty;/sau_transfer_end;scr01 = sau_reception_transmission | sau_timing_4 | sau_msb | sau_length_8;sdr01 = 0;so0&= sau_ch1_data_output_1;/* csi01 so initial level */soe0 |= sau_ch1_output_enable;/* csi01 output enable */* intcsi01 priority low */csipr101 = 0;csipr001 = 0;/* si01 pin setting */pm4 |= 0x10;/* so01 pin setting */p4 |= 0x20;pm4 &= 0x20;/* sck01 pin setting */pm4 |= 0x08;/=void csi01_start( void )csimk01 = 0;/* intcsi01 enable */ss0 |= sau_ch1_start_trg_on;/* csi01 enable */ /gpcsi01rxaddress = spi_rx_buffer;/接收数据指针指向spi_rx_buffer第一个字节 /gcsi01rxcnt = 0;/接收数据个数清零 /gcsi01txcnt = 0;/发送数据个数清零 /setsendflag(sendend);/启动时处于接收状态 /setreceiveflag(receiving);/启动后还没有接收数据/=void csi01_stop( void )st0 |= sau_ch1_stop_trg_on;/* csi01 disable */csimk01 = 1;/* intcsi01 disable */csiif01 = 0;/* intcsi01 if clear */=unsigned char spi_send_data(unsigned char *buffer,unsigned char lenth) gpcsi01txaddress = buffer; gcsi01txcnt = lenth - 1; smr01 |= 0x0001;/add by haolj sio01 = buffer0; setsendflag(sending); while(sendend != check_send_flag() ;/ostimedly(10); return lenth;/=unsigned char spi_receive_data(unsigned char *buffer,unsigned char lenth) unsigned char ack; ack = 0; while(check_receive_flag() = receiving) if(gcsi01rxcnt ack) & gcsi01rxcnt=bufferlen) ack = gcsi01rxcnt; ostimedly(1); else setreceiveflag(receivend); memcpy(buffer,spi_rx_buffer,gcsi01rxcnt); ack = gcsi01rxcnt; gcsi01rxcnt = 0; gpcsi01rxaddress = spi_rx_buffer; return ack; /=#pragma vector = intcsi01_vect_interrupt void md_intcsi01( void ) if( sending = check_send_flag() ) if(gcsi01txcnt = 0) smr01 &= sau_buffer_empty;/add by haolj sio01 = 0xee; setsendflag(sendend); gpcsi01rxaddress = spi_rx_buffer; gcsi01rxcnt = 0; return ; data = sio01; gpcsi01txaddress+;sio01 = *gpcsi01txaddress;gcsi01txcnt-; else data = sio01; sio01 = 0xee; if(gpcsi01rxaddress - spi_rx_buffer) bufferlen) *gpcsi01rxaddress = data; gpcsi01rxaddress +; gcsi01rxcnt +; setreceiveflag(receiving); else setreceiveflag(receivend); gpcsi01rxaddress = spi_rx_buffer; unsigned char check_send_flag(void) return txflag;/=unsigned char check_receive_flag(void) return rxflag;/=void setreceiveflag(unsigned char rflag) rxflag = rflag;/=void sets
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚姻解除财产分配协议范本:房产、车辆及子女抚养权
- 公共交通空调设备采购、安装及定期检修合同
- 住宅小区消防系统安全性能检测与维保服务协议
- 离婚协议谈话笔录:离婚后子女监护权与抚养费协议
- 班组模具安全培训内容课件
- 成语互动游戏课件
- 胡杨之地 阅读答案
- 2025年麻醉科常用镇痛药物使用技巧考试卷答案及解析
- 中国历史文选 课件 第十七讲 周瑜传;第十八讲 释老志
- 奇妙的生命课件
- 2025年江苏省农垦集团有限公司人员招聘笔试备考及参考答案详解
- 军用无人机讲解课件
- 2025年中国移动校园招聘笔试试题解析及答题技巧
- 长宏国际安全知识培训课件
- 2025-2026学年地质版(2024)小学体育与健康三年级(全一册)教学设计(附目录P123)
- 2025年湖南郴州市北湖区引进高层次人才和招聘事业单位工作人员28人备考练习题库及答案解析
- 项目四旅游电子商务网络营销92课件
- 麻醉深度监测-洞察及研究
- 电缆桥架设备知识培训课件
- 《研学旅行指导师实务》课件-第6章 基(营)地研学课程操作
- 白酒委托灌装合同协议书范本
评论
0/150
提交评论