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

查看: 2627|回复: 1

关于SPI的疑问?

[复制链接]

8

主题

8

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2012-6-14 16:35:09 | 显示全部楼层 |阅读模式
想请问一下我对SPI的认知不是很多,看完介绍后发现他有的主从模式,目前我使用STM8L151C6,我现在设定成主模式是可以从PB6输入(MOSI),程式如下:
#include "stm8l15x.h"
void CLK_Config(void);
void GPIO_Config(void);
void SPI_Config(void);
main()
{
 CLK_Config();
 GPIO_Config();
 SPI_Config();
 SPI_SendData(SPI1,0x5A);
 while(SPI_GetFlagStatus(SPI1,SPI_FLAG_TXE)==RESET)
 {
  }
 SPI_count++;
 GPIO_Config();
 for(;;)
 {
 }
}
void CLK_Config(void)
{
 CLK_SYSCLKSourceSwitchCmd(ENABLE);
 CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
 CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
 CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,ENABLE);
 while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE)
 {
 } 
}
void GPIO_Config(void)
{
 GPIO_Init(GPIOB,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Slow);
 GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_Out_PP_Low_Slow);
 GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_In_FL_No_IT);
}
void SPI_Config(void)
{
 SPI_Init(SPI1,SPI_FirstBit_MSB,SPI_BaudRatePrescaler_256,SPI_Mode_Master,SPI_CPOL_Low,SPI_CPHA_1Edge,SPI_Direction_Tx,SPI_NSS_Soft,(u8)0x06);
 SPI_Cmd(SPI1,ENABLE);
 SPI_ITConfig(SPI1,SPI_IT_TXE,ENABLE);
}
但我把他设定程从模式他不会从于PB7(MISO)output,程式如下:
#include "stm8l15x.h"
void CLK_Config(void);
void GPIO_Config(void);
void SPI_Config(void);
main()
{
 CLK_Config();
 GPIO_Config();
 SPI_Config();
 SPI_SendData(SPI1,0x5A);
 while(SPI_GetFlagStatus(SPI1,SPI_FLAG_TXE)==RESET)
 {
  }
 SPI_count++;
 GPIO_Config();
 for(;;)
 {
 }
}
void CLK_Config(void)
{
 CLK_SYSCLKSourceSwitchCmd(ENABLE);
 CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
 CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
 CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,ENABLE);
 while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE)
 {
 } 
}
void GPIO_Config(void)
{
  GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Slow);
 GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_In_FL_No_IT);
 GPIO_Init(GPIOB,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Slow);}
void SPI_Config(void)
{
 SPI_Init(SPI1,SPI_FirstBit_MSB,SPI_BaudRatePrescaler_256,SPI_Mode_Slave,SPI_CPOL_Low,SPI_CPHA_1Edge,SPI_Direction_Tx,SPI_NSS_Soft,(u8)0x06);
 SPI_Cmd(SPI1,ENABLE);
 SPI_ITConfig(SPI1,SPI_IT_TXE,ENABLE);
}
是我设定有问题 还是认知上有问题 麻煩請各位高手回答一下
<
回复

使用道具 举报

0

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-6-16 11:09:59 | 显示全部楼层

RE:关于SPI的疑问?

SPI作从机的时候,NSS=0;这样SPI从机才能通讯,你查一下你的NSS是不是低电平,NSS有两种控制方式,一个是硬件方式,一个是软件方式,通过控制NSS来选择是和主机还是从机通讯
回复 支持 反对

使用道具 举报

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