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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

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

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

正文摘要:

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

回復(fù)

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

P ...

我都在一個(gè)板上,距離很近。我將速度降低,設(shè)置為:SPI_BaudRatePrescaler_256。今天試了一天,還是連接不上,前兩天還好好的。現(xiàn)在將數(shù)值寫(xiě)入,讀出來(lái)全是0xFF。還有沒(méi)有其他可能?這個(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ī)能收到呢?芯片手冊(cè)并沒(méi)有給如何設(shè)置,只是給了一個(gè)端口,設(shè)置 ...

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

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

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

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

因?yàn)椋恢滥?nbsp; 雙機(jī) SPI 通訊 具體進(jìn)行什么 數(shù)據(jù)交互,就只能推測(cè)這些了。
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)樗俣鹊脑?huà),每次重新開(kāi)始的時(shí)候,不應(yīng)該時(shí)好時(shí)壞。
ID:624769 發(fā)表于 2022-10-11 18:41
主機(jī)需要考慮從機(jī)的響應(yīng)和處理速度。從機(jī)需要考慮在做任何處理時(shí),都能停下手頭的工作,響應(yīng)主機(jī)的要求。

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 999国产视频 | 韩日精品在线观看 | 国产高清精品一区二区三区 | 91精品久久久久久久久久 | 91久久精品国产 | 国产精品中文字幕一区二区三区 | 久久精品亚洲精品国产欧美 | 97久久精品午夜一区二区 | 国产成人99久久亚洲综合精品 | 亚洲444kkkk在线观看最新 | 亚洲一区在线日韩在线深爱 | 久久福利电影 | 国产成人免费观看 | 久久免费看 | 99精品视频在线观看 | 国产丝袜一区二区三区免费视频 | 欧美三级视频在线观看 | 亚洲国内精品 | 99成人在线视频 | 亚洲一级黄色 | 99re| 91精品导航 | 久久久久一区 | 国产成人99久久亚洲综合精品 | 国产视频福利一区 | 亚洲乱码一区二区 | 91久久综合亚洲鲁鲁五月天 | 三级黄色片在线观看 | 奇米av| 欧美激情国产精品 | 国产精品免费高清 | 午夜视频一区二区 | 毛片一区二区三区 | 性一爱一乱一交一视频 | 亚洲国产精品第一区二区 | 黄色免费在线网址 | 视频一区 国产精品 | 国产福利免费视频 | 成人午夜黄色 | 亚洲性视频 | 久久亚洲一区二区三 |