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

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