写入SPIDAT的数据启动了SPISIMO引脚上的数据发送,先发送最高有效位;同时,接收的数据通过SPISOMI引脚移入SPIDAT的最低有效位。当有一定数量的数据位通过SPIDAT移位时,产生下列事件:
一、SPI INT FLAG置1 二、SPIDAT的内容传送到SPIBUF 三、如果SPI INT ENA也被置1,则产生中断请求 在主模式中,无论寄存器SPIPC1的位5(SPISTE FUNCTION)为何值,SPISTE引脚都将用作通用数字I/O引脚。在本设计中,引脚SPISTE用作从机SPI模块的片选引脚;在将主机数据传送到从机器件之前,应将从机器件片选引脚拉低电平,并且在传送完主机数据之后,重新将该引脚拉为高电平。 4.2软件设计 4.2.1 TMS320 F240的SPI初始化 上文介绍了F240的SPI模块的功能,配置寄存器串行外设接口工作于主模式,波特率设置为2MHz,初始化程序如下: void SPIinitial(void) { *SPICCR=0xc7; //复位SPI *SPICTL=0x06; //主模式,使能TALK,禁止SPI中断 *SPISTS=0x00; //清中断标志 *SPIBRR=0x04; //波特率设为绕行电感SPICLK=SYSCLK/4+1=2MHz,SYSCLK=10MHz *SPIPC1=0x52; //SPISTE引脚配置成输出引脚,SPICLK被配置成串行时钟的输 //入或输出 *SPIPC2=0x22; //SPISIMO,SPISOMI用作SPI输入输出 *SPICCR=0x47; //上升沿发送,下降沿输入数据锁存,无时延,字功率电感器符长度为8 } 4.2.2 F240对X5168的读写程序 对EEPROM的读写是设计的重点,以下分别介绍: 一、读操作 a).从EEPROM存储器阵列中读数据时,/CS 首先被拉低以选择器件,向器件传送8位读READ指令(00000011B),接着是16位地址(高位在前)。在读操作码和地址送出后,存储位于贴片电感在所选地址的存储器中的数据在SO线上被移出,继续提供时钟脉冲可接着读出存储在位于下一个地址的存储器中的数据。每移出一个字节地址自动增加至下一个更高的地址,在达到最高地址时,地址计数器返回到地址$0000,允许读周期无限期地继续。将/CS拉高可终止读操作。参见读EEPROM阵列时序图2。 
图2 读EEPROM阵列时序图 以下是读X5168子程序,其中RA_ADDR为存储读出数据的数组的首地址,EEP_ADDR为要读取数据在EEPROM阵列中的地址,N为要读取数据的个数 void READ_X5168(unsigned int * RA_ADDR, unsigned int EEP_ADDR, unsigned int N) { unsigned int I,readspibuf1,readspibuf2; *SPIPC1&=0xBF; /*置低SPISTE引脚,从而选通X5168*/ *SPIDAT=READ; /*发送X5168的写状态寄存器命令字*/ while((*SPISTS&0x40)!=0x40){} /*等待SPI写结束*/ readspibuf=*SPIBUF; /*读SPIBUF寄存器,清除SPI INT FLAG 位*/ *SPIDAT=EEP_ADDR>>8; /*发送地址高八位*/ while((*SPISTS&0x40)!=0x40){} /*等待SPI写结束*/ readspibuf=*SPIBUF; /*读SPIBUF寄存器,清除SPI INT F一体成型电感器LAG 位*/ *SPIDAT=EEP_ADDR; /*发送地址低八位*/ while((*SPISTS&0x40)!=0x40){} /*等待SPI写结束*/ readspibuf=*SPIBUF; /*读SPIBUF寄存器,清除SPI INT FLAG 位*/ for (I=0;I { *SPIDAT=0; /*发送伪数据*/ while((*SPISTS&0x40)!=0x40){} /*等待SPI读/写结束*/ readspibuf1=*SPIBUF; /*读取高位字节*/ readspibuf1=readspibuf1<<8; *SPIDAT=0; /*发送伪数据*/ while((*SPISTS&0x40)!=0x40){} /*等待SPI读/写结束*/ readspibuf2=*SPIBUF; /*读取低位字节*/ *(RA_ADDR+I)=readspibuf1+readspibuf2; } *SPIPC1|=0x40; /*置高SPISTE引脚,从而禁止X5168*/ } b).读状态寄存器时,首先要拉低/CS 线,以选中器件,接着发送8位的RDSR指令(00000101B),在RDSR操作码发出以后,状态寄存器的内容在SO线上被移出。参见读状态寄存器时序图3。 
图3 读状态寄存器时序图 以下是读状态寄存器子程序: unsigned int RSDR_X5168(void) { unsigned int readspibuftrue; *SPIPC1&=0xBF; /*置低SPISTE引脚,从而选通X5168*/ *SPIDAT=RDSR; /*发送x5168的读状态寄存器命令字*/
负浮点数稳压器
来源:zhengyuan
功率电感 你用 iPhone 吗?你用 Android 吗?你的手机里有电子设计用的软件吗?在 APP Store 或者安卓市场,搜索 DAKA,可 基于51单片机的数字电压表仿真设计 4月08日 第三届·无线通信技术研讨会 立即报名 12月04日 2015•第二届中国IoT大会 精彩回顾 10月30日ETF•智能硬件开发技术培训会 精彩回顾 10月23日ETF•第三届 消费 微电子所在超高速ADC/DAC芯片研制方面取得突破 4月08日 第三届·无线通信技术研讨会 立即报名 12月04日 2015•第二届中国IoT大会 精彩回顾 10月30日ETF•智能硬件开发技术培训会 精彩回顾 10月23日ETF•第三届 消费
2/4 首页 上一页 1 2 3 4 下一页 尾页 |