首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SPI口写完就读应该这样操作吗

SPI口写完就读应该这样操作吗

我用DP266的SPI1口读写EEPROM(AT25128),当从AT25128读出数据时,先向AT25128写读请求命令,然后接收AT25128发出的数据,是不是应该按以下操作:


   SPI1DR=READ;  //向 at25128写读请求命令
   while(!SPI1SR_SPTEF);
   delay(1); 
   SPI1DR=0xff; // 需要读的地址高8位
   while(!SPI1SR_SPTEF);
   delay(1); 
   SPI1DR=0xff; //需要读的地址低8位
   while(!SPI1SR_SPTEF);//等待发送完毕 
   
   while(!SPI1SR_SPTEF);//等待接收1字节 


 num=  SPI1DR;//读出数据


 


写完就读连续用2个while(!SPI1SR_SPTEF);有问题吗?

              非学无以广才,非志无以成学;              

如何保持时钟?

DP256作为主机,在发送时,能自动产生时钟,那在接收时,怎么保持时钟呢?
              非学无以广才,非志无以成学;              
SPI1SR_SPTEF会置位1次还是2次呢?
因为利用发送一个字节来产生接收时需要的时钟,而SPI1DR里的8个BIT发送完会
置位SPI1SR_SPTEF,SPI1DR接收到8个BIT也会置位SPI1SR_SPTEF,而这里实际接收和发送是同时进行,这样好象SPI1SR_SPTEF应该只置位1次。不知道我的理解是不是正确的。请指教。
              非学无以广才,非志无以成学;              
那通过SPI口接收1字节是不是应该这样:

SPI1DR=0xff; //产生接收时钟
while(!SPI1SR_SPTEF);//等待发送完 1字节
while(!SPI1SR_SPIF); //等待接收到 1字节
              非学无以广才,非志无以成学;              
返回列表