首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写通过SPI Master从内存传输数据到2个slave的代码

如何编写通过SPI Master从内存传输数据到2个slave的代码
EN

Stack Overflow用户
提问于 2015-06-05 17:12:47
回答 2查看 181关注 0票数 0

我从USB接收数据到Atxmega 128A1的内部存储器

代码语言:javascript
运行
复制
    if ( (SWITCHPORTL.IN & PIN1_bm) == 0 )
    {
        j = 0;
        while (j < NUM_BYTES)
        {
            // Wait till there is unread data in the receive buffer
            while((USART.STATUS & USART_RXCIF_bm) == 0 ){};
            // Read out the received data
            __far_mem_write(j+SDRAM_ADDR, USART.DATA);
            if (j == (NUM_BYTES-1))
            {
                // Toggle LED 1
                LEDPORT.OUTTGL = PIN1_bm;
            }
            j++;
        }
    }

如何编写通过SPI主机将数据从内部存储器传输到两个从机的代码,以便将奇数和偶数字节的数据分别发送到两个从机?如何向两个从(多个从)发起master?

EN

回答 2

Stack Overflow用户

发布于 2015-06-07 14:52:36

我认为当两个从机都能理解类似格式的数据时,这是可能的,因为在CPOL和CPHA中有相同的配置。您可以通过分别使能CS引脚来选择一个特定的从机。因此,您的代码可能如下所示:

代码语言:javascript
运行
复制
initMaster();
selectSlave1(); //Make CS1 low and CS2 high
spiTransmit(data1); //transmit odd byte
selectSlave2(); //Make CS2 low and CS1 high
spiTransmit(data2); //transmit even byte
票数 0
EN

Stack Overflow用户

发布于 2015-06-16 16:59:58

由于两个从机都连接到同一总线,一次只能传输一个数据,因此有两个选项可供选择:

  1. 实现了一个简单的协议,以便每个从机都知道哪个字节属于它。(示例:一个具有6位长度和2位接收器代码的字节报头或(1 -从机1,2从机2-3都是从机偶数/奇数)
  2. 使用从机选择引脚并传输一个字节,并确保您不会发送下一个并取消选择第一个接收器,直到发送旧的接收器(计算时钟周期将花费多长时间并对它们进行nop或将它们用于其他有用的东西))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30662682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档