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

查看: 7832|回复: 5

请教STM32F103与DSP采用SPI通信的问题!

[复制链接]

2

主题

6

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-8-2 20:52:04 | 显示全部楼层 |阅读模式
 RT,我采用TI的5509DSP当做主机,STM32F103做从机,ST的SPI2的NSS配置为硬件模式,这里需要把NSS通过GPIO配置为输入口吗?然后我现在测试程序,设置一个死循环,一直从DSP往ST发数据,时钟、输出还有片选信号通过示波器观察都对,但是ST就是没有产生中断,也没有接收到数据,这里编程必须写成双向传输吗?也就是DSP发数据的时候必须也有接收数据在进行?求高手解答!
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-8-3 08:54:47 | 显示全部楼层

RE:请教STM32F103与DSP采用SPI通信的问题!

这个时候你需要通过一个引脚来配置,当前是否进入SPI读取,或者发送。功能类似SPI通信的模块。
回复 支持 反对

使用道具 举报

2

主题

6

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-8-3 10:17:40 | 显示全部楼层

回复:请教STM32F103与DSP采用SPI通信的问题!

回复第 2 楼 于2011-08-03 00:54:47发表:
这个时候你需要通过一个引脚来配置,当前是否进入SPI读取,或者发送。功能类似SPI通信的模块。
 
我这样配置对不对?把SPI2的NSS配置为一个输入口
  /* SPI2 Config -------------------------------------------------------------*/
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI2, &SPI_InitStructure);
 
  /* Enable SPI2 */
  SPI_Cmd(SPI2, ENABLE);
 
 /* Configure SPI2 pins: SCK, MISO and MOSI ---------------------------------*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
 
 /*配置NSS为GPIO口,配置为上拉输入*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOB, &GPIO_InitStructure);


 
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-8-3 11:13:35 | 显示全部楼层

RE:请教STM32F103与DSP采用SPI通信的问题!

● 硬件NSS模式,分两种情况:
─NSS输出被使能:当STM32F10xxx工作为主SPI,并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,这时NSS引脚被拉低,所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成从SPI设备。当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其它的设备它是主设备;如果它不能拉低NSS,这意味着总线上有另外一个主设备在通信,这时将产生一个硬件失败错误(HardFault)。
─ NSS输出被关闭:允许操作于多主环境。
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;这里应该改成硬件。
回复 支持 反对

使用道具 举报

2

主题

6

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-8-3 11:32:41 | 显示全部楼层

回复:请教STM32F103与DSP采用SPI通信的问题!

回复第 4 楼 于2011-08-03 03:13:35发表:
● 硬件NSS模式,分两种情况:
─NSS输出被使能:当STM32F10xxx工作为主SPI,并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,这时NSS引脚被拉低,所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成从SPI设备。当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其它的设备它是主设备;如果它不能拉低NSS,这意味着总线上有另外一个主设备在通信,这时将产生一个硬件失败错误(HardFault)。
─ NSS输出被关闭:允许操作于多主环境。
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;这里应该改成硬件。
 
但是按照手册的说法,NSS不管在硬件还是软件模式下都是不能自动置位的。当我DSP这边的CS信号拉高以后,NSS是自动置低使ST变成主机的。难道我又要通过编程使NSS拉高变成从机?这一点很疑惑
 
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-8-3 15:18:05 | 显示全部楼层

RE:请教STM32F103与DSP采用SPI通信的问题!

NSS是自动置低使ST变成从机的。NSS输出低,是告诉别人他是主机。而他接受到低,是别人让他变成从机。
回复 支持 反对

使用道具 举报

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