还是想不明白<br /><br />既然是硬件SPI,CLK怎么会中断呢? ----- 这个模块不会有什么缺陷吧 <br /><br />把SLAVE芯片拿掉也这样.不明白了.<br /><br /><br />软件部分<br /><br />U8 SPI_FRAM_SendByte(U8 byte)<br />{<br /> U32 rdata;<br /> SSIDataPut(SSI_BASE,byte);<br /> SSIDataGet(SSI_BASE,&rdata);<br /> return (U8)rdata;<br />}<br /><br /><br />void FW_data(U16 addr,U16 val)<br />{<br /> U16 bvn;<br /> addr *=2;<br /> SSI_CS_OFF;<br /> SPI_FRAM_SendByte(0X06); //写使能 <br /> SSI_CS_ON;<br /> SSI_CS_OFF;<br /> SPI_FRAM_SendByte(0X02);<br /> bvn = addr & 0xFF00;<br /> bvn = bvn >>8;<br /> SPI_FRAM_SendByte((u8)(bvn));<br /> SPI_FRAM_SendByte((u8)(addr & 0xFF)); <br /> bvn = val&0xFF00;<br /> bvn = bvn>>8;<br /> SPI_FRAM_SendByte((u8)(bvn));<br /> SPI_FRAM_SendByte((u8)(val & 0xFF));<br /><br /> SSI_CS_ON;<br />}<br />u16 FR_data(u16 addr)<br />{<br /> U16 vh,vl;<br /> U16 bvn;<br /> addr *=2;<br /> <br /> SSI_CS_OFF;<br /> SPI_FRAM_SendByte(0X03);<br /> bvn = addr&0xFF00;<br /> bvn = bvn>>8;<br /> SPI_FRAM_SendByte((u8)bvn);<br /> SPI_FRAM_SendByte((u8)((addr) & 0xFF)); <br /> vh = SPI_FRAM_SendByte(0XFF);<br /> vl = SPI_FRAM_SendByte(0XFF);<br /> SSI_CS_ON;<br /> return (vh*0x100+vl);<br />}<br /><br />U16 fdata[100];<br />void main(void)<br />{ <br /> //初始化<br /> SSIConfig(SSI_BASE,SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,SSI_SPEED,8);<br /> SSIEnable(SSI_BASE);<br /> GPIOPinTypeSSI(GPIO_PORTA_BASE, SSI_CLK|SSI_TX | SSI_RX);<br /> <br /> GPIODirModeSet(GPIO_PORTA_BASE,SSI_CS,GPIO_DIR_MODE_OUT);<br /> GPIOPadConfigSet(GPIO_PORTA_BASE, SSI_CS, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD); <br /> SSI_CS_ON;<br /> ....<br /> <br /> <br /> <br /> for(i=0;i<10;i++)<br /> {<br /> FW_data(i*10,7990+i);<br /> fdata[100+i] = FR_data(10*i);<br /> }<br /> <br /><br />while(1)<br />{<br />;<br />}<br /> }
|