你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SPI做从设备 HAL_TransmitReceive_IT的使用

[复制链接]
april1818 提问时间:2017-11-17 18:00 /
我用的STM32L476 nucleo board 需要与树莓派通过SPI通讯 。。树莓派是master STM32是从设备 有以下问题想请教一下 1. STM32的NSS 硬件模式
    意思是 主从设备SPI设置好以后 当数据准备好 调用发送接收函数的时候 NSS会硬件自动拉低么
2. HAL_TransmitReceive_IT 函数是怎么工作的
    当数据准备好 就会进入中断 执行发送接收么
3. 在debug模式下 可以看到 HAL_TransmitReceive_IT 里 SPI的状态是busy 我附上我的程序 希望大家帮我看一下


我添加了一个握手信号 当STM32有数据发送时 先发送一个请求给主设备 出发主设备的中断 主设备中断执行数据接收发送
STM: Slave                          Pi: Master
PA4-SPI1-NSS ------------> CE0PIN_10
PA5-SPI1-SCK ------------->CLKPIN_23
PA6-SPI1-MISO <-----------dataMOSI PIN_19
PA7-SPI1-MOSI ----------->dataMISO PIN_21
PA0-GPIO_Output --------->InterruptPIN_0
附上我的从设备STM32的主程序 都写在了主循环里
/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
           GPIO_PinState          mybit= HAL_GPIO_ReadPin( GPIOC,  GPIO_PIN_13);  // Button 蓝色按键
                   while (mybit==GPIO_PIN_RESET) // 当蓝色按键按下 发送请求给主机
                   {
                                     /*send Interrupt signal to PI 发送请求*/
                                    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
                                /*data transmit*/
                    if(HAL_SPI_TransmitReceive_IT(&hspi1,(uint8_t*)aTxBuffer, (uint8_t *)aRxBuffer, 4)!=HAL_OK)
                                      {
                                        /* Transfer error in transmission process */
                                       Error_Handler();

                                      }
                    HAL_Delay(100);
                    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
                   }
  }





收藏 1 评论3 发布时间:2017-11-17 18:00

举报

3个回答
无薪税绵 回答时间:2018-2-22 10:30:33
1、NSS 硬件输入:主机接高电平,从机接低电平。
2、第二个问题,请参考 http://www.eemaker.com/stm32-hal-spijsysh.html
3、调试模式下,查看SPI的状态是不准确的,一定要连续运行,再从串口打印出来才准确的。

再给一个参考:利用STM32CubeMX生成SPI查询代码
http://www.cnblogs.com/libra13179/p/6911687.html

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

黑皮男 回答时间:2018-2-22 11:27:21
签到

评分

参与人数 1ST金币 -1 收起 理由
zero99 -1 不要在这边签到啊

查看全部评分

wolfgang2015 回答时间:2018-2-22 12:21:01
1. STM32的NSS 硬件模式
    意思是 主从设备SPI设置好以后 当数据准备好 调用发送接收函数的时候 NSS会硬件自动拉低么

>>>>发送时会的。

2. HAL_TransmitReceive_IT 函数是怎么工作的
    当数据准备好 就会进入中断 执行发送接收么

    需要对传输接收中断相关HAL中断状态进行封装,打开这函数你就知道,看看具体的这仅仅是个传送命令,当然在前后需要有中断状态值的判断。

3. 在debug模式下 可以看到 HAL_TransmitReceive_IT 里 SPI的状态是busy 我附上我的程序 希望大家帮我看一下

这个你要看看HAL_SPI_Receive_IT、HAL_Transmit_IT 是如何封装的,可以参考一下

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版