<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32F4 SPI2初始化及收發(fā)數(shù)據(jù)使用庫函數(shù)

          STM32F4 SPI2初始化及收發(fā)數(shù)據(jù)使用庫函數(shù)

          作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
          我的STM32F4 Discovery上邊有一個加速度傳感器LIS302DL。在演示工程中,ST的工程師使用這個傳感器做了個很令人羨慕的東西:解算開發(fā)板的姿態(tài)。當開發(fā)板傾斜時候,處于最上邊的LED點亮,其他LED不亮。同時,用MicroUSB數(shù)據(jù)線將開發(fā)板連接電腦時,開發(fā)板就會虛擬成一個鼠標。傾斜開發(fā)板時,鼠標指針會向傾斜的方向移動。歸根結(jié)底,就是牛B的ST工程師用加速度傳感器完成了姿態(tài)解算。

          在開發(fā)板上,加速度傳感器使用了SPI方式用STM32F4芯片進行通信。STM32F4的SPI1 作為主機,與LIS302Dl進行通信,讀取或者寫入數(shù)據(jù)。由于我沒有使用過STM32的SPI口,因此在板子的空余資源中找到了SPI2接口來做實驗。實驗是這樣的:將SPI的MISO和MOSI腳相連。這樣SPI發(fā)送了什么數(shù)據(jù),就能接收到什么數(shù)據(jù)。不需要額外的器件就能試驗。

          本文引用地址:http://www.ex-cimer.com/article/201611/318273.htm

          引腳:將PB13、PB14、PB15三個引腳的復用功能,分別對應于SPI2SCK、SPI2MISO、SPI2MOSI。

          引腳初始化:

          void SPI_GPIOConfig(void)
          {
          GPIO_InitTypeDef GPIO_InitStructure;
          RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //開啟時鐘

          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //引腳初始化
          GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 GPIO_Pin_14 GPIO_Pin_15;
          GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOB,&GPIO_InitStructure);

          GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_SPI2); //打開引腳的復用功能
          GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_SPI2);
          GPIO_PinAFConfig(GPIOB,GPIO_PinSource15,GPIO_AF_SPI2);
          }

          SPI2功能初始化:

          void SPI_Config(void)
          {
          SPI_GPIOConfig();
          RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE); //時鐘

          SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //全雙工模式
          SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //作為主機使用
          SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //數(shù)據(jù)長度8
          SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
          SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
          SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //軟件設置NSS功能
          SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
          SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
          SPI_InitStructure.SPI_CRCPolynomial = 7;
          SPI_Init(SPI2,&SPI_InitStructure);
          SPI_Cmd(SPI2,ENABLE);
          }

          之后就可以收發(fā)數(shù)據(jù)了:

          void MySPI_SendData(char da)
          {
          while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);
          SPI_SendData(SPI2,da);
          }

          uint8_t MySPI_ReceiveData(void)
          {
          while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)==RESET);
          return SPI_ReceiveData(SPI2);
          }



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();