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

查看: 2617|回复: 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版