gpt4 book ai didi

c++ - 如何调用多个slave进行Spi数据传输?

转载 作者:行者123 更新时间:2023-11-30 20:25:03 42 4
gpt4 key购买 nike

我有一个通用方法,其中 SDRAM 中的数据被传输 SPIC.DATA。我添加了延迟功能,以便用采样频率调整数字信号。

    /* 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...是偶数组数据到其他从机。

最佳答案

正如 Lundin 所说,您需要决定如何将从站连接到 Controller 。 128A1 有几个选项。

  1. 使用相同的 MISO、MOSI 和 SCK 线路运行到从站。然后使用 Controller 上的两个不同引脚连接到从设备上的启用引脚。一次启用一个设备并通过同一总线发送数据。
  2. 128A1 有四个独立的 SPI 端口。使用单独的总线将每个从站连接到不同的端口。在端口之间交替发送。
  3. 您可以在微 Controller 上使用 USART 的 SPI 功能。

我建议选择 1 或 2。连接从站后,编程将与您已有的非常相似。

关于c++ - 如何调用多个slave进行Spi数据传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730647/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com