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

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 不要在这边签到啊

查看全部评分

wolfgang 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版