关于STM32的SPI的问题

发布者:闪耀的星空最新更新时间:2024-10-14 来源: cnblogs关键字:STM32  SPI 手机看文章 扫描二维码
随时随地手机看文章

开发工具:万利STM32F3210B-LK1+IAR6.4+Jlink

1、在做SPI测试数据输入输出的时候,全速运行F5可以正常运行,但是单步运行f10会死在程序while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE)==RESET)处。观察寄存器RXNE的标志位始终为0,怎么硬件不置位呢,全速运行明明收到数据了啊。

尝试办法:试了半天原来SPI不能用跟踪寄存器方式单步运行,删掉寄存器框框,单步运行就能OK到底,但是没用到在线调试的优点啊,寄存器没法看啊

2、SPI口,同步串行通信中的“同步”指的是什么? 

答:同步,是指在通信过程中,被控制的对象与主机的时钟是相同的,都是由主机发出。

3、使用SPI外设时如何设定NSS为通用IO口?

答:主模式和从模式下均可以由软件或硬件进行NSS管理; 将SPI_CR1寄存器的SSM位置为1时,NSS引脚将被释放出来用作GPIO口;使用STM32软件库时,初始化SPI外设时,使用如下代码: SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; 如果NSS引脚用于其他外设时,需要使能NSS输出: SPI_SSOutputCmd(SPIx, ENABLE);

4、SPI2配置为主模式时候,4-8行程序顺序不要变动,首先查询SPI2发送缓存器空标志位,等待直到其标志位为1,也就是发送缓存器为空,要再次发送数据了SPI_SendData(SPI2, SPI2_Buffer_Tx[Tx_Idx++]);这句必须放到while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE)==RESET);后面,SPI_SendData(SPI1, SPI1_Buffer_Tx[Tx_Idx]);也可以放到while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE)==RESET);前面

  1. while(Tx_Idx

  2. {

  3. /* Wait for SPI2 Tx buffer empty */

  4. while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE)==RESET);

  5. /* Send SPI1 data */

  6. SPI_SendData(SPI1, SPI1_Buffer_Tx[Tx_Idx]);

  7. /* Send SPI2 data */

  8. SPI_SendData(SPI2, SPI2_Buffer_Tx[Tx_Idx++]);

  9. /* Wait for SPI1 data reception */

  10. //while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE)==RESET);

  11. /* Read SPI1 received data */

  12. //SPI1_Buffer_Rx[Rx_Idx] = SPI_ReceiveData(SPI1);

  13. /* Wait for SPI2 data reception */

  14. // while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE)==RESET);

  15. /* Read SPI2 received data */

  16. //SPI2_Buffer_Rx[Rx_Idx++] = SPI_ReceiveData(SPI2);

  17. while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE)==RESET);

  18. SPI2_Buffer_Rx[Rx_Idx] = SPI_ReceiveData(SPI2);

  19. while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE)==RESET);

  20. SPI1_Buffer_Rx[Rx_Idx++] = SPI_ReceiveData(SPI1);


关键字:STM32  SPI 引用地址:关于STM32的SPI的问题

上一篇:STM32建立IAR开发环境
下一篇:stm32控制舵机

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved