【问题标题】:SPIDRV API port pin definitionSPIDRV API 端口引脚定义
【发布时间】:2020-11-27 18:08:17
【问题描述】:

我需要使用 SPI 将我的 EFM32LG 与 dac80004 通信。
当我在 SPI 模式下定义 USART 时,我需要将引脚和端口定义如下:
Port A pin 2:片选sync_not(低电平有效)
端口 E 引脚 10:MOSI (SDIN)
Port E pin 11:MISO(串行接口数字输出)
端口 E 引脚 12:SCLK
端口 A 引脚 1:清除 DAC 引脚

从下面链接中显示的 API 中,我只有 _USART_ROUTE_LOCATION_LOC0 。
如何使用 SPIDRV 的 API 设置我的实际位置?
谢谢。\

https://docs.silabs.com/mcu/latest/efm32lg/group-SPIDRV#gaec2cac185e42ded3da0d3e2d5cd56226

【问题讨论】:

    标签: embedded spi


    【解决方案1】:

    那里列出的值是默认值,它们不是唯一的选项。

    如果您查看EFM32LG datasheet,第 352 页,您可以在其他位置设置USART0 SPI 引脚。

    位置 0 适用于 MOSI、MISO 和 CLK,但如果您希望驱动程序控制 CS,则需要为 PE13。

    或者,您可以将 spidrvCsControlAuto 更改为 spidrvCsControlApplication 并将 CS 作为 GPIO 手动控制。

    【讨论】:

    • 你好 DaV,当我选择另一种方式时,USARTn_ROUTE 寄存器中的 CSPEN 位域怎么样。我应该禁用它吗?谢谢。
    • 是的。但是,如果您将spiDrvCsControlAuto 更改为spidrvCsControlApplication,驱动程序将为您执行此操作。在platform/emdrv/spidrv/src/spidrv.c 中查看SPIDRV_Init()
    • 您好,我无法决定选择什么命令将数据传输到从站 SPIDRV_MTransmitB(handle, B31_B24, 8);还是 SPIDRV_MTransmit?谢谢。
    • @rocko445,我想你会发现函数SPIDRV_MTransmitB()的阻塞版本更容易使用。
    • 你好 Dav,我已经定义了 uint8_t B31_B24=0b00000011;作为我要发送到 myDAC 的命令但是当我执行 SPIDRV_MTransmitB(handle, B31_B24, 8);它给了我一个错误 SPIDRV_MTransmitB' 使指针从整数而不进行强制转换。我哪里做错了?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2021-07-31
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多