我是SPI新手; Linux內核提供了用於聲明SPI總線和設備的API,並根據標準Linux驅動程序模型對其進行管理。SPI:Linux驅動程序模型
,可以看到該結構spi_master這裏的描述:https://www.kernel.org/doc/htmldocs/device-drivers/API-struct-spi-master.html
以上在鏈路中的描述指出,「每個設備可以被配置爲使用不同的時鐘速率,因爲這些共享信號,除非該芯片忽略被選中「。爲了把這個句子放在比賽中,我必須說「設備」是指SPI從設備,而「共享信號」是MOSI,MISO和SCK信號。
實際上,在struct spi_device(https://www.kernel.org/doc/htmldocs/device-drivers/API-struct-spi-device.html)中有一個名爲max_speed_hz的屬性,它不存在於struct spi_master中。所以我可以理解上面聲明的第一部分:「每個設備可以配置爲使用不同的時鐘頻率」。
但是,第二部分是什麼意思?是否「因爲共享信號被忽略,除非芯片被選中」意味着我被允許使用不同的時鐘速率,但只有一個時間通過啓用/禁用具有不同速率的從器件?
謝謝你的幫助!問候,
- 利瑪竇
是的,但這是因爲您只想一次與一臺設備通話。每臺設備都在公交車上「轉彎」。每個設備都有自己的一套命令,最大SCLK等等。所以我們只想一次啓用一個設備。這可能有一些警告,但我認爲這通常是正確的。 – rkyser
@rkyser:你爲什麼說「你只想一次與一個設備交談」?爲簡單起見,我們假設一個時鐘頻率。我們來看看[典型的SPI總線上的維基百科](http://en.wikipedia.org/wiki/File:SPI_three_slaves.svg)。假設從機有8位數據寄存器,主機有24位數據寄存器。你是否說我不允許通過將SS1,SS2和SS3置零(假設從設備選擇爲低電平有效)使所有從設備一起工作? –
我認爲這取決於硬件架構。在你給出的例子中,如果主設備正在輸出24位數據,由於每個從設備接收到完全相同的位,所以從設備如何知道哪個設備屬於它? [這個體系結構](http://en.wikipedia.org/wiki/File:SPI_three_slaves_daisy_chained.svg)對你正在談論的內容會更好。但是,再一次,這實際上取決於SPI設備正在與之交談。我只是從我有限的經歷中發言。 – rkyser