版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SPI配置、时序及应用主讲:李楠SPI配置模式1STC15系列单片机进行SPI通信时,通过SPEN位、SSIG位、SS引脚和MSTR位,控制其工作模式。SPENSSIGSS引脚/P1.2MSTR主/从模式MISO/P1.4MOSI/P1.3SCLK/P1.5功能0XP1.2/SSX禁止SPIMISOP1.4MOSI/P1.3SCLK/P1.5禁止SPI1000从模式输出输入输入选择作为从设备1010从模式,未选中高阻输入输入未被选中。MISO为高阻状态,以避免总线冲突1001->0从模式输出输入输入P1.2/SS配置为输入或准双向口,SSIG为0,如果将SS驱动为低,则选择作为从设备。当SS变为低电平时,将MSTR清零主从模式的选择SPI配置模式1SPENSSIGSS引脚/P1.2MSTR主/从模式MISO/P1.4MOSI/P1.3SCLK/P1.5功能1011主(空闲)输入高阻高阻当主机空闲时,MOSI和SCLK为高阻,以避免总线冲突。用户必须将SCLK上拉或者下拉,以避免SCLK处于悬空状态
主(活动)输入输出输出作为主机激活时,MOSI和SCLK为推挽输出11P1.2/SS0从模式输出输入输入
11P1.2/SS1主模式输入输出输出主从模式的选择主从模式注意事项2作为主设备时的注意事项当CPHA为0时,SSIG必须为0不能忽略SS引脚,SS引脚必须设置为低,并且在每个连续的串行字节发送完后必须重新设置为高电平。如果在SS低电平有效时,执行对SPDAT寄存器的写操作,将会导致出现一个写冲突错误。当CPHA为1时,SSIG可以置1可以忽略SS引脚。如果SSIG为0,在连续传输之间SS引脚保持低电平有效。这种方式适合具有单个固定主设备和单个固定从设备之间驱动MISO数据线的系统。主从模式注意事项2如果SPEN为1,SSIG为0且MSTR为1,则SPI为主模式。通过P2M1和P2M0寄存器(用于设备P2端口的输入/输出模式),将SS引脚配置为输入或者准双向模式。在该模式下,另外一个主设备可以将该引脚驱动为低,从而将该器件选择为SPI从设备,并向该从设备发送数据。为了避免总线冲突,SPI执行下面的行为:清零MSTR,并且变为从设备。同时,将MOSI和SCLK强制作为输入模式,而MISO作为输出模式。将SPSTAT寄存器的SPIF标志置为1。如果已经使能SPI中断,则产生SPI中断。主从模式注意事项2在SPI中,总是由主设备发起数据传输过程。如果使能SPI,并将其设置为主设备,主设备对SPI数据寄存器的写操作将启动SPI时钟发生器和数据的传输。在数据写入SPDAT之后的0.5~1个SPI比特位时间后,在MOSI引脚上将出现数据。作为从设备时的注意事项传输完一个字节后,停止SPI时钟,将SPIF标志置1,并产生一个中断。主设备和从设备CPU的两个移位寄存器可以看作是一个16位的循环移位寄存器。当数据从主设备移位传输到从设备的同时,数据以反方向从从设备移位传输到主设备。也就是,在一个移位周期过程中,主设备和从设备相互交换数据。主从模式注意事项2SPI在发送数据时,为单级缓冲方式;而在接收数据时,为双缓冲方式。如果在发送数据的过程中,向移位寄存器写数据,则将WCOL位置1表示数据冲突在这种情况下,继续发送完当前的传输的数据,但是新写入的数据丢失。
由于主设备拥有数据传输的控制能力,因此主设备发生写冲突的情况是比较少见的但是,从设备有可能发生写冲突。这是因为当主设备启动数据传输时,从设备无法控制数据的传输过程。写冲突当从设备接收到数据时,将接收到的数据发送到一个并行读数据缓冲区。这样,就释放了移位寄存器用于接收下一个数据。必须在下一个字符完全移入之前从数据寄存器中读出接收到的数据。否则,将丢失前一个数据。SPI模块配置及时序3CPHA为0时主模式数据传输时序图通过时钟相位控制位CPHA,允许用户设置采样和改变数据的时钟边沿。此外,时钟极性比特控制位CPOL,允许用户设置时钟的极性。
CPHA为0时从模式数据传输时序图SPI模块时序3SPI模块配置及时序3
CPHA为1时主模式数据传输时序图
CPHA为1时从模式数据传输时序图SPI接口的编程要点4SPI接口的使用包括SPI接口的初始化程序和SPI中断服务程序的编写。SPI接口的初始化包括以下几个方面:①通过SPI控制寄存器SPCTL设置:SS引脚的控制、SPI使能、数据传送的位顺序、设置为主机或从机、SPI时钟极性、SPI时钟相位、SPI时钟选择。②清零寄存器SPSTAT中的标志位SPIF和WCOL(向这两个标志位写1即可清零)。③开放SPI中断(IE2中的ESPI=1,IE2寄存器不能位寻址,可以使用“或”指令)及总中断(IE中的EA=1)。在中断服务程序中首先需要将标志位SPIF和WCOL清零,因为SPl中断标志不会自动清除。SPI通讯应用——两台单片机间通讯5任务:电脑每向主单片机发送一个字节数据,主单片机的RS232串口每收到一个字节就立刻将收到的字节通过SPl口发送到从单片机中;从单片机收到这个数据后,通过SPI口送回主单片机;主单片机收到从单片机发回的一个字节,再把收到的这个字节通过RS232口发送到电脑。可以使用串口助手观察结果。SPI通讯应用——两台单片机间通讯5主单片机程序:#include"stc15w4k58s4.h"#defineFOSC18432000L#defineBAUD(256-FOSC/32/115200)
#defineSPEN0x40//SPCTL.6#defineMSTR0x10//SPCTL.4#defineSPIF0x80#defineWCOL0x40#defineESPI0x02//IE2.1
sbitSPISS=P1^1;/SPI从机选择口,连接到其它MCU的SS口SPI通讯应用——两台单片机间通讯5voidInitUart()/*************串口初始化函数******************/{SCON=0x5a;//设置串口为8位可变波特率T2L=0xd8;//设置波特率重装值T2H=0xff;//115200bps(65536-18432000/4/115200)AUXR=0x14;//T2为1T模式,并启动定时器2AUXR|=0x01;//选择定时器2为串口1的波特率发生器}/*******串口发送函数*****/voidSendUart(unsignedchardat){while(!TI);//等待发送完成TI=0;//清除发送标志SBUF=dat;//发送串口数据}/******串口接收函数******/unsignedcharRecvUart(){while(!RI);//等待串口数据接收完成RI=0;//清除接收标志returnSBUF;//返回串口数据}SPI通讯应用——两台单片机间通讯5voidInitSPI()/*************SPI初始化函数******************/{SPDAT=0;//初始化SPI数据
SPSTAT=SPIF|WCOL;//清除SPI状态位
SPCTL=SPEN|MSTR;//主机模式}/*************SPI中断函数******************/voidspi_isr()interrupt9//SPI中断服务程序9(004BH){SPSTAT=SPIF|WCOL//清除SPI状态位SPISS=1;//拉高从机的SSSendUart(SPDAT);//返回SPI数据}SPI通讯应用——两台单片机间通讯5voidmain()/**************主函数******************/{InitUart();//初始化串口
InitSPI();//初始化SPIIE2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度LED屏幕亮度调节与节能改造合同
- 2024年度知识产权保护合同:MLB棒球帽正品知识分享
- 2024年度物业服务合同标的及安全生产责任书
- 2024年多功能空调维修合作协议
- 2024装修合同该如何写范文
- 2024办公家具购买合同
- 2024年城市基础设施建设合同 with 工程质量与投资预算
- 2024年出版发行代理合同
- 【初中生物】脊椎动物(第2课时两栖动物和爬行动物) 2024-2025学年七年级生物上学期(人教版2024)
- 2024加工贸易合同
- 危大工程巡视检查记录
- 《科学社会主义的理论与实践》课件
- ACS患者随访管理表1-3-16
- 经典诵读《满江红》课件
- 工业X射线探伤室设计简述
- 微景观制作课件
- 业务招待费审批单
- 建筑工程项目管理咨询招标(范本)
- 三位数除两位数的除法练习题
- 慢性胃炎的中医治疗培训课件
- Python程序设计课件第7章面向对象程序设计
评论
0/150
提交评论