This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/TM4C1292NCPDT:SPI 和 I2C TI RTOS 驱动器调用需要锁定机制

Guru**** 2392905 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/657020/rtos-tm4c1292ncpdt-spi-and-i2c-ti-rtos-driver-calls-need-locking-mechanism

器件型号:TM4C1292NCPDT

工具/软件:TI-RTOS

您好!

我已经创建了一个驱动程序文件、其中包含用于 SPI 和 I2C 的可用 TI RTOS 驱动程序调用、如下所示:

SPI.c 文件

SPI_CALL ()

SPI_Handle = SPI_OPEN (SPI_BAASEDDRESS、&SPI_PARAMETER);
SPI_TRANSFCTION (SPI_Handle、&SPI_TRANSACTION);
SPI_CLOSE (SPI_Handle);

i2c.c 文件

I2C_CALL ()

I2C_Handle = I2C_open (I2C_BAASEDDRESS、I2C_Parameter);
I2C_TRANSFCTION (I2C_Handle、I2C_TRANSACTION)
I2C_Close (I2C_Handle);

我的问题:

1.我能否传递 SPI0_BASE、SPI1_BASE 等不同的基址,以便通过单个 SPI_CALL ()函数同时访问这两个 SPI。  I2C 也是如此。

2.锁紧装置是否在内部进行保养? 或者我需要在 SPI_CALL ()和 i2c_call()函数内实现信标。

此致、

Manohar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Manohar、

    [引用 user="Manohar B"]1. 我能否传递 SPI0_BASE、SPI1_BASE 等不同的基址,以便通过单个 SPI_CALL ()函数同时访问这两个 SPI。  I2C 也是如此。[/quot]

    否 您需要在要与之通信的每个外设实例上调用 SPI_open。 SPI_Config 结构需要有2个单独的条目。 I2C 也是如此。

    [引用 user="Manohar B"]2. 它是否在内部注意锁定机制? 或者我需要在 SPI_CALL ()和 i2c_call()函数内实现信标。[/quot]

    在内部、每个驱动程序实例都有自己的用于线程安全的信标。 例如、假设您这样做了

    spiHandle0 = SPI_open (Board_SPI0、&params);

    两个不同的任务可以调用 SPI_transfer (spiHandle0、...) 而不必担心线程安全。 请注意、尽管您需要自动对 SPI 外设进行两个或多个 SPI_transfer 调用(例如、第一条消息读取外设、第二条消息提供数据)、但您必须提供该逻辑。  

    Todd