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

关于SPI的疑问?

[复制链接]
螞蟻水上飆 提问时间:2012-6-14 16:35 /
想请问一下我对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);
}
是我设定有问题 还是认知上有问题 麻煩請各位高手回答一下
收藏 评论1 发布时间:2012-6-14 16:35

举报

1个回答
dbstar 回答时间:2012-6-16 11:09:59

RE:关于SPI的疑问?

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

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版