我有一個通用的方法,在SDRAM中的數據被傳輸SPIC.DATA。我添加了延遲功能,以便用採樣頻率調整我的數字信號。如何爲Spi數據傳輸調用多個從站?
/* Transfer data from internal memory via SPI from Master to Slave */
if ((SWITCHPORTL.IN & PIN2_bm) == 0)
{
flip = false;
j = 0;
while (j < NUM_BYTES)
{
if (flip == false)
{
// Set slave select line low (active) for Port C
PORTC.OUTCLR = PIN4_bm;
}
// Give the data to the data register of the Master
SPIC.DATA = __far_mem_read(j+SDRAM_ADDR);
if (flip == true)
{
// wait for the 2nd 8-bit-block to be send
-> delay 0.7us
_delay_us(0.7);
// Set slave select line high (inactive)
PORTC.OUTSET = PIN4_bm;
// delay to adjust to sampling frequency
100 kHz -> 6.9us; 200kHz -> 1.9us
_delay_us(1.9); }
flip = !flip;
j++;
}
}
我怎樣才能調用兩個從選擇此使得在SDRAM中的數據應當被傳輸到這兩個從站交替地一個在另一個之後?讓我們考慮存儲在SDRAM作爲A1A2A3A4A5等這樣A1 A3 A5數據...是應該傳送到我的奇數從屬選擇的一組數據,並且A2 A4 A6 ...是對其他從屬的偶數組數據。
你可以提一下你正在使用的微控制器嗎?有100個不同的AVR。 –
問題不明確。這些奴隸在同一條SPI總線上嗎?如果是這樣,你如何在它們之間複用?看起來你的代碼中只有一個從選擇引腳。或者這是一個「菊花鏈」SPI解決方案嗎?請說明有哪些硬件。 – Lundin
[如何編寫傳輸數據從內部存儲器通過SPI主機到2從機]的可能的重複(http://stackoverflow.com/questions/30662682/how-to-write-code-for-transfer-data-from內存通過spi-master-to-2-sla) – Olaf