OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15761|回复: 9

stm32 spi2从机设置问题

[复制链接]

4

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2011-3-22
在线时间
71 小时
发表于 2011-10-4 11:21:17 | 显示全部楼层 |阅读模式

主机STC12C5A60S2,从机STM32F103RBT6 现在是数据接收不正确.
连接:
主机MISO---200欧电阻---MISO从机
主机MOSI---200欧电阻---MOSI从机
主机CLK---200欧电阻---CLK从机
主机P1.0---200欧电阻---NSS从机


主机SPI设置CPOL=0,CPHA=0,数据发送为高位先发.
主机程序经测试是正常的(用另一STC12C5A60S2作从机测试过)

STM32从机设置如下:

 

 

void SPI_slave(void)
{
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
   NVIC_InitTypeDef NVIC_InitStructure;

/* Configure and enable SPI2 interrupt -------------------------------------*/ 
  NVIC_InitStructure.NVIC_IRQChannel = SPI2_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

GPIO_InitTypeDef GPIO_InitStructure;

  /* Configure SPI2 pins: SCK 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);

SPI_InitStructure.SPI_Direction =

SPI_Direction_2Lines_RxOnly;//SPI_Direction_2Lines_FullDuplex;// SPI_Direction_1Line_Rx;
   SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;//Soft;
  //SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
 // SPI_InitStructure.SPI_CRCPolynomial = 7;
  /* SPI2 configuration ------------------------------------------------------*/    


  SPI_Init(SPI2, &SPI_InitStructure);


    /* Enable SPI2 RXNE interrupt */
  SPI_ITConfig(SPI2, SPI_IT_RXNE, ENABLE);

  /* Enable SPI2 */
  SPI_Cmd(SPI2, ENABLE);

}

void SPI2_IRQHandler(void)
{
  /* Store SPI2 received data */
  SPI2_Buffer_Rx[1] = SPI_ReceiveData(SPI2);

}


请问那里设置不对?
另外:
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_RxOnly;//SPI_Direction_2Lines_FullDuplex;// SPI_Direction_1Line_Rx;是用那个方式
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;是用SPI_CPHA_1Edge还是用SPI_CPHA_2Edge
 // SPI_InitStructure.SPI_CRCPolynomial = 7;这个应该如何设?

请原子帮忙看看,谢谢。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2011-3-22
在线时间
71 小时
 楼主| 发表于 2011-10-4 21:23:59 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-4 16:26:23 | 显示全部楼层
回复【楼主位】lcmdw:
---------------------------------
接线都接错了,怎么能通讯呢?
 MOSI->MISO
 MISO->MOSI.
 SCK->SCK
这样才对.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2011-3-22
在线时间
71 小时
 楼主| 发表于 2011-10-4 18:22:52 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
STM参考手册里,单主单从的接法是
MOSI->MOSI
MISO->MISO
 SCK->SCK 

为何发不了图?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-4 18:57:48 | 显示全部楼层
回复【3楼】lcmdw:
---------------------------------
那可能我错了吧.我的理解是应该MOSI接MISO的.
可以发图的.你点击回复文章,就是进行高级回复了,里面有插图的控件.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2011-3-22
在线时间
71 小时
 楼主| 发表于 2011-10-4 21:22:38 | 显示全部楼层

附上手册上的接线图。

stm32.JPG
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-4 22:03:20 | 显示全部楼层
回复【6楼】lcmdw:
---------------------------------
你这样接,不能通讯?你先确认下是哪一边的问题吧.
看看是发送端,还是接收端的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-1-5
在线时间
22 小时
发表于 2015-12-20 14:04:30 | 显示全部楼层
应该是接线错了吧?楼主的NSS用硬件控制还是软件控制的呢
天道酬勤
回复 支持 反对

使用道具 举报

12

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-1-5
在线时间
22 小时
发表于 2015-12-20 19:49:58 | 显示全部楼层
回复【8楼】落月枫情:
---------------------------------
接线没有错,可以肯定楼主用的是硬件NSS,楼主是什么原因呢
天道酬勤
回复 支持 反对

使用道具 举报

12

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2013-1-5
在线时间
22 小时
发表于 2015-12-22 22:11:18 | 显示全部楼层
改为SPI_Direction_2Lines_FullDuplex模式,并且NSS选择软件模式,用主SPI来使能控制NSS,试试
天道酬勤
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 13:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表