久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2708|回復: 14
打印 上一主題 下一主題
收起左側

STM32CBT6單片機SPI通信,端口重定義引腳PA15,PB3,PB4,PB5

[復制鏈接]
跳轉到指定樓層
樓主
ID:1102481 發(fā)表于 2024-1-25 15:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
300黑幣
描述:原本使用的SPI2,端口PB12.13.15   PA0  正常顯示   對應  CS,SCLK,SDA,RS(命令/數據)
         換成SPI1,端口 PA15,PB3.4.5                               對應  CS,SCLK,RS(命令/數據),SDA    問題:換了以后,不能顯示。只換PA15,可以顯示,所以問題出在PB345這塊。請教大家
#include "SPI.h"

void GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
        
                //對應的SCK   PB3
                GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
                GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
        
            //MOSI為 SDA       PB 5  
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
    GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
               
                //MISO__A0 --  PB4        
                GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
    GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

        //液晶初始化I/O口  rst      PA0  --rst
    GPIO_InitStructure.GPIO_Pin =   GPIO_Pin_0;        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
        //片選    PA15___CS
                GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
                GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void SPI_Initial()
{

        SPI_InitTypeDef  SPI_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
  SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;//設置SPI單向或者雙向的數據模式:SPI設置為雙線雙向全雙工
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;        //設置SPI工作模式:設置為主SPI
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//設置SPI的數據大小:SPI發(fā)送接收8位幀結構
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//選擇了串行時鐘的穩(wěn)態(tài):時鐘懸空高
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//數據捕獲于第二個時鐘沿
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;         //NSS信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內部NSS信號有SSI位控制
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//定義波特率預分頻的值:波特率預分頻值為2
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //指定數據傳輸從MSB位還是LSB位開始:數據傳輸從MSB位開始
  SPI_Init(SPI1, &SPI_InitStructure);         //根據SPI_InitStruct中指定的參數初始化外設SPIx寄存器

  SPI_Cmd(SPI1, ENABLE);
}

void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;
  /*RCC 復位和時鐘設置*/
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();                                         //時鐘管理重置

  /* Enable HSE 外部高速晶振*/
  RCC_HSEConfig(RCC_HSE_ON);                   //打開外部晶振

  /* Wait till HSE is ready 等待外部晶振 就緒, 返回值:SUCCESS 就緒,ERROR 未就緒*/
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    //Flash讀取緩沖啟動Flash預取值    加速

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);                                            //Flash操作的延時設置Flash_Latency延時2周期

    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);                                         //AHB使用系統時鐘

    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);                                  //APB2(高速)為HCLK的一半
        
    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);                           //APB1(低速)為HCLK的一半
        //注:AHB主要負責外部存儲器時鐘。APB2負責AD,I/O,高級TIM,串口1。APB1負責DA,USB,SPI,I2C,CAN,串口2345,普通TIM
    /* ADCCLK = PCLK2/4 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div4);        //默認4

    /* PLLCLK = 8MHz * 7 = 56 MHz   注意此處的8M是指的外部晶振的大小*/  
        
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);      //PLLCLK = 8MHz * 9 = 72 MH      默認為7  

    /* Enable PLL */
    RCC_PLLCmd(ENABLE);                                                                                //啟動PLL

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}       //等待PLL啟動

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                                //將PLL設置為系統時鐘源

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08){}                          //等待系統時鐘源的啟動
  }
}

void SPI_SendData(uint8_t byte)
{
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);   
  SPI_I2S_SendData(SPI1, byte);
}

最佳答案

查看完整內容

或許你我的手上的手冊不一樣? 我手上的這份明白表示,PB3/4/5,沒有原生態(tài)SPI接口,連映射的都沒有。既然本就沒有,你映射過去也依然沒用。 至于只換PA15可以,是因為你的SPI_NSS是由軟件控制的,可以是任意IO。 而硬件控制,則需跟隨SPIx的群組走了。 附上手冊,其中第21頁你看一下。 如果確定有SPI,那恐怕是要查一下外圍了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:1102481 發(fā)表于 2024-1-26 10:12 | 只看該作者
cocolala 發(fā)表于 2024-1-25 21:17
看下JTAG默認的IO口,注意映射問題。

如圖,JTAG 占用PA15,PB3.PB4,       已經用代碼         RCC_APB2PeriphClockCmdRCC_APB2Periph_AFIO,ENABLE);                                                                               GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);                                                                               GPIO_PinRemapConfig(GPIO_Remap_SPI1 , ENABLE);




開啟AFIO,將PB3.4變?yōu)槠胀ǹ谧樱恢滥睦镞是不行。




1706234833762.png (233.21 KB, 下載次數: 103)

1706234833762.png
回復

使用道具 舉報

板凳
ID:69038 發(fā)表于 2024-1-25 15:12 | 只看該作者
或許你我的手上的手冊不一樣?
我手上的這份明白表示,PB3/4/5,沒有原生態(tài)SPI接口,連映射的都沒有。既然本就沒有,你映射過去也依然沒用。
至于只換PA15可以,是因為你的SPI_NSS是由軟件控制的,可以是任意IO。
而硬件控制,則需跟隨SPIx的群組走了。

附上手冊,其中第21頁你看一下。
STM32F103X8.pdf (15.39 MB, 下載次數: 3)


如果確定有SPI,那恐怕是要查一下外圍了。
回復

使用道具 舉報

地板
ID:1102481 發(fā)表于 2024-1-25 15:14 | 只看該作者
這個是測試包,問題在   SPI和LCD12864部分

測試.7z

170.05 KB, 下載次數: 3

回復

使用道具 舉報

5#
ID:883242 發(fā)表于 2024-1-25 16:03 | 只看該作者
stm32更新換代好多次了,具體型號都不肯說誰也幫不了你,說了其實也沒用因為太多了,還是自己用CubeMX配置一下好一些。

如果是第一代STM32F103才可以用這個STDPeripheral庫。
回復

使用道具 舉報

6#
ID:161164 發(fā)表于 2024-1-25 16:08 | 只看該作者
30塊包郵的邏輯分析儀,你值得擁有
回復

使用道具 舉報

7#
ID:137005 發(fā)表于 2024-1-25 16:12 | 只看該作者
STM32 PB3 PB4 PB5作為普通IO,用作SPI使用
https://blog.csdn.net/feiyingzaishi/article/details/103108929

評分

參與人數 1黑幣 +12 收起 理由
衛(wèi)玉書 + 12 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:226055 發(fā)表于 2024-1-25 21:17 | 只看該作者
    看下JTAG默認的IO口,注意映射問題。
回復

使用道具 舉報

9#
ID:1102481 發(fā)表于 2024-1-26 10:04 | 只看該作者
Hephaestus 發(fā)表于 2024-1-25 16:03
stm32更新換代好多次了,具體型號都不肯說誰也幫不了你,說了其實也沒用因為太多了,還是自己用CubeMX配置 ...

不好意思,打錯字了,STM32F103C8T6,第一次用這個懸賞,提示我有%詞匯,然后可能刪除的時候,漏了。
確實太多了。具體問題已經指出,SPI1端口重映射的問題,但是可能第一次用端口映射,這里面問題不清楚在哪里,所以求助大家,也不知道如何將懸賞給大家
回復

使用道具 舉報

10#
ID:1102481 發(fā)表于 2024-1-26 10:06 | 只看該作者
Hephaestus 發(fā)表于 2024-1-25 16:03
stm32更新換代好多次了,具體型號都不肯說誰也幫不了你,說了其實也沒用因為太多了,還是自己用CubeMX配置 ...

好的,謝謝你的建議
回復

使用道具 舉報

11#
ID:1102481 發(fā)表于 2024-1-26 10:14 | 只看該作者
lkc8210 發(fā)表于 2024-1-25 16:08
30塊包郵的邏輯分析儀,你值得擁有

小白,第一次聽說,好的,我看看。謝謝
回復

使用道具 舉報

12#
ID:69038 發(fā)表于 2024-1-26 11:53 | 只看該作者
103Cx系列貌似沒有SPI3。甚至低容量版本(<64K)的只有一個SPI1
只有在STM32F103Rx/Vx/Zx中,PB3/4/5才是SPI3,
在CBT6中PB3/4/5只是GPIO和Jlink接口,也不能映射到SPI1,你要的SPI1在PA4/5/6。
回復

使用道具 舉報

13#
ID:1102481 發(fā)表于 2024-1-26 17:14 | 只看該作者
zhuls 發(fā)表于 2024-1-26 11:53
103Cx系列貌似沒有SPI3。甚至低容量版本(

是的,沒有用到SPI3,原來用的SPI2,后來IO不夠,改成用SPI1。
我的問題就是如何正確的在基礎代碼基礎上,成功改到SPI1(注意看題)。然后8樓是C8T6的引腳資源,
關閉JTAG,開啟AFIO,   PB5的IIC也關了,SPI2也試著關了,暫時沒用。
回復

使用道具 舉報

14#
ID:1102481 發(fā)表于 2024-1-29 10:16 | 只看該作者
zhuls 發(fā)表于 2024-1-25 15:12
或許你我的手上的手冊不一樣?
我手上的這份明白表示,PB3/4/5,沒有原生態(tài)SPI接口,連映射的都沒有。既然 ...

感謝 ,您的手冊和我的確實不一樣。我又看了一下這個數據手冊,確實有SPI1的映射,不過您的關于PA15的回答確實解決了我一個困惑,,謝謝您無私的指點。我再找找其他問題,祝新年快樂
回復

使用道具 舉報

15#
ID:1102481 發(fā)表于 2024-1-29 10:19 | 只看該作者
molo 發(fā)表于 2024-1-25 16:12
STM32 PB3 PB4 PB5作為普通IO,用作SPI使用
https://blog.csdn.net/feiyingzaishi/article/details/103108 ...

實在抱歉,最佳答案只能有一個,感謝您的指點
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美天堂在线观看 | 在线一区二区观看 | 免费国产精品久久久久久 | 亚洲理论在线观看电影 | 日本久草| 久久国产精品精品 | 欧美大片黄 | 在线一区视频 | 99精品99| 久久综合国产精品 | 成人性生交大片免费看r链接 | 一区二区三区亚洲精品国 | 欧美一区二区 | 久久国产欧美日韩精品 | 欧美中文字幕在线观看 | 久久久亚洲一区 | 91麻豆精品国产91久久久更新资源速度超快 | 麻豆hd | 中文字幕国产日韩 | 激情网站在线观看 | 中文字幕 国产精品 | 精品国产91乱码一区二区三区 | 久久久久一区 | 91精品国产乱码久久久久久久久 | 中文字幕第一页在线 | 亚洲精品黄色 | 欧美一级一| 99久久久久久久久 | 久久久国| 欧美激情精品久久久久久 | 激情91| 国产69久久精品成人看动漫 | 日韩在线不卡视频 | 夜久久 | 特级做a爰片毛片免费看108 | 久久精品一区 | 久热免费在线 | 久久高清免费视频 | 日韩三级一区 | 91香蕉嫩草| 亚洲精品久久久久久首妖 |