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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

兩個(gè)芯片的SPI通信問題?

查看數(shù): 1974 | 評論數(shù): 8 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2022-10-11 15:42

正文摘要:

我使用的是STM32F103C8T6和PCAP01來做SPI1通訊。在使用的過程中發(fā)現(xiàn),SPI1有的時(shí)候使用沒有問題,通訊正常,有的時(shí)候通信失敗,SPI1用不了。如果是代碼或者硬件有問題,那應(yīng)該不能通訊,為什么有的時(shí)候好用,有的時(shí) ...

回復(fù)

ID:391219 發(fā)表于 2022-10-12 21:12
188610329 發(fā)表于 2022-10-12 12:49
暈死,被帶溝里去了, 你說兩個(gè)芯片SPI通訊, 潛意識就認(rèn)為 是兩個(gè)單片機(jī)了。弄了半天是 控制器件。

P ...

我都在一個(gè)板上,距離很近。我將速度降低,設(shè)置為:SPI_BaudRatePrescaler_256。今天試了一天,還是連接不上,前兩天還好好的。現(xiàn)在將數(shù)值寫入,讀出來全是0xFF。還有沒有其他可能?這個(gè)我的初始化代碼。
void SPIx_I2Cx_GPIOs_Init(void* bus_type)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
                         RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,  DISABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
                         RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,  ENABLE);
       
        //SPI1_NSS
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//PA4
        GPIO_Init(GPIOA,&GPIO_InitStructure);
  //SPI1_CLK
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//PA5
  GPIO_Init(GPIOA, &GPIO_InitStructure);
        //SPI_MISO
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//PA6
  GPIO_Init(GPIOA, &GPIO_InitStructure);
        //SPI_MOSI
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//PA7
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        SPI_I2S_DeInit(bus_type);
        //ía2¿ÖD¶Ïêäèë
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//PD4
  GPIO_Init(GPIOD, &GPIO_InitStructure);
        //SPI ENABLE Æà1à1¤¾ßêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PD3
  GPIO_Init(GPIOD, &GPIO_InitStructure);
        // SPIx Enable = 0 for SPI Mode // SPIx Enable = RSN for GP22
        GPIO_WriteBit(GPIOD, GPIO_Pin_3, Bit_RESET);
}

void SPIx_I2Cx_Interface_Init(void* bus_type)
{
        //3õê¼»ˉSPIx½ó¿ú
        SPI_InitTypeDef SPI_InitStructure;
        //RCC_SYSCLKConfig (RCC_SYSCLKSource_HSI);
        //RCC_HCLKConfig (RCC_SYSCLK_Div1);
        RCC_APB2PeriphResetCmd (RCC_APB2Periph_SPI1, DISABLE);
  RCC_APB2PeriphClockCmd (RCC_APB2Periph_SPI1, ENABLE);
       
        // All are defined in stm32f10x_spi.h
  SPI_InitStructure.SPI_Direction         = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode              = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize          = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL              = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA              = SPI_CPHA_2Edge;//
  SPI_InitStructure.SPI_NSS               = SPI_NSS_Soft;
  // SPI frequence devider
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStructure.SPI_FirstBit          = SPI_FirstBit_MSB;

  // Apply SPIx configuration
  SPI_Init(bus_type, &SPI_InitStructure);
  // Enabling the SPIx Interface
  SPI_Cmd(bus_type, ENABLE);

  // Enabling the NSS Output during transmission
  SPI_SSOutputCmd (bus_type, ENABLE);
       
        GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET);
       
}
ID:624769 發(fā)表于 2022-10-12 12:49
1123qqw 發(fā)表于 2022-10-12 10:46
交換的數(shù)據(jù)為21位的浮點(diǎn)數(shù)。我怎么確保從機(jī)能收到呢?芯片手冊并沒有給如何設(shè)置,只是給了一個(gè)端口,設(shè)置 ...

暈死,被帶溝里去了, 你說兩個(gè)芯片SPI通訊, 潛意識就認(rèn)為 是兩個(gè)單片機(jī)了。弄了半天是 控制器件。

PCAP01 沒有用過,不清楚,不過SPI 操控器件, 時(shí)好時(shí)壞, 無非3個(gè)原因
1,線路沒接好,有干擾,器件的供電沒有,有效的濾波。(檢查線路,排除干擾,增加濾波電容,從你的原理圖上看,6腳這里應(yīng)該添加 104電容)
2,主機(jī)的 SPI 驅(qū)動(dòng)力不夠,距離較遠(yuǎn),1/0轉(zhuǎn)換不及時(shí)  (添加上拉電阻)
3,SPI 設(shè)定的傳輸速度過快,接近器件的極限值。(降低SPI的速度,測試時(shí)建議調(diào)到最慢速度。)

ID:391219 發(fā)表于 2022-10-12 10:58
yzwzfyz 發(fā)表于 2022-10-12 08:27
你要保證,當(dāng)你發(fā)送的時(shí)候,對方在收!!
建議用中斷方式解決這個(gè)問題。

從機(jī)是PCAP01芯片,說明手冊并沒有給我如何設(shè)置,只是給了一個(gè)啟動(dòng)SPI的方式。
ID:391219 發(fā)表于 2022-10-12 10:46
本帖最后由 1123qqw 于 2022-10-12 10:59 編輯
188610329 發(fā)表于 2022-10-11 22:21
不是指 SPI 的傳輸速度 快慢,而是指  SPI  傳指令 給 從機(jī), 從機(jī) 接受到 指令, 處理,準(zhǔn)備數(shù)據(jù) 回傳給主 ...

交換的數(shù)據(jù)為21位的浮點(diǎn)數(shù)。我怎么確保從機(jī)能收到呢?芯片手冊并沒有給如何設(shè)置,只是給了一個(gè)端口,設(shè)置為低電平就能啟動(dòng)SPI通信。
ID:123289 發(fā)表于 2022-10-12 08:27
你要保證,當(dāng)你發(fā)送的時(shí)候,對方在收!!
建議用中斷方式解決這個(gè)問題。
ID:624769 發(fā)表于 2022-10-11 22:21
不是指 SPI 的傳輸速度 快慢,而是指  SPI  傳指令 給 從機(jī), 從機(jī) 接受到 指令, 處理,準(zhǔn)備數(shù)據(jù) 回傳給主機(jī),這個(gè)過程需要時(shí)間的, 但是,時(shí)鐘是主機(jī)發(fā)出的,主機(jī)是不知道 從機(jī) 準(zhǔn)備沒準(zhǔn)備好的。 所以,這個(gè)指令的復(fù)雜程度,從機(jī)需要處理的時(shí)間, 主機(jī)這邊要有  充分的等待, 才能 發(fā)出時(shí)鐘 取數(shù)據(jù)。
同樣,主機(jī)發(fā)出 CE/SS  信號,然后發(fā)數(shù)據(jù) 給從機(jī), 這個(gè)時(shí)候,從機(jī)在干什么?  你能不能確保,這個(gè)時(shí)候從機(jī)就 等在 SPI 線程上 等待指令接收完畢,立刻處理? 如果,這個(gè)時(shí)候,從機(jī)在處理別的事情,你又沒有機(jī)制,讓從機(jī)停止工作,來處理SPI 發(fā)來的指令? 這是  雙機(jī)通訊中必須考慮的問題。

因?yàn)椋恢滥?nbsp; 雙機(jī) SPI 通訊 具體進(jìn)行什么 數(shù)據(jù)交互,就只能推測這些了。
ID:391219 發(fā)表于 2022-10-11 19:36
188610329 發(fā)表于 2022-10-11 18:41
主機(jī)需要考慮從機(jī)的響應(yīng)和處理速度。從機(jī)需要考慮在做任何處理時(shí),都能停下手頭的工作,響應(yīng)主機(jī)的要求。

那您的意思是速度太快了嗎?可是有的時(shí)候,我再重新燒錄程序的時(shí)候,會(huì)全部復(fù)位在進(jìn)行燒錄。有的時(shí)候能通信,有的時(shí)候就不行。要是因?yàn)樗俣鹊脑挘看沃匦麻_始的時(shí)候,不應(yīng)該時(shí)好時(shí)壞。
ID:624769 發(fā)表于 2022-10-11 18:41
主機(jī)需要考慮從機(jī)的響應(yīng)和處理速度。從機(jī)需要考慮在做任何處理時(shí),都能停下手頭的工作,響應(yīng)主機(jī)的要求。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产aⅴ精品| 国产一区二区三区在线观看免费 | 草久久 | 狠狠色综合欧美激情 | 亚洲一区二区三区视频在线 | 中文字字幕一区二区三区四区五区 | 欧美一级免费片 | 亚洲一区二区三区在线播放 | 99精品热视频 | 欧美一二区 | 午夜91| 久久久久久亚洲精品 | 久久久日韩精品一区二区三区 | 欧美日韩国产欧美 | 亚洲高清在线观看 | 视频一区在线观看 | 精品欧美一区二区三区久久久 | 99精品国产一区二区三区 | 在线视频91 | 毛片a区| 九九热精品在线 | 黑人精品| 欧美精品在线一区 | 欧美黄a | 国产人成精品一区二区三 | 欧洲免费毛片 | 做a视频| 91电影在线播放 | 艹逼网 | 久久丝袜| 久久综合一区二区 | www精品| 日韩欧美视频网站 | 亚洲成人三区 | 色www精品视频在线观看 | 午夜精品久久久久久久久久久久久 | 91精品久久久久久久久久小网站 | 日韩福利 | 日本免费一区二区三区 | 日韩在线视频播放 | 欧美一二三 |