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.

[参考译文] CC1120:CC1120扩展地址写入/读取问题

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1185745/cc1120-cc1120-extended-address-write-read-problem

器件型号:CC1120

各位专家:

使用 STM32 LL_Driver 控制 CC1120时遇到问题

根据 CC1120用户指南(图1)、我知道要将数据写入位于扩展地址的寄存器、请将+0x00添加到0x2F、输入扩展寄存器的地址、然后输入我写入寄存器的值

-图1

例如)在这种情况下、我想将0x01写入扩展地址处的 FREQ0寄存器(0x0E)。  

在这种情况下、我使用 STM32至 SPI 接口将数据包传输到 CC1120、如图2所示

-图2

 经确认、上述方法在应用于 STM32 HAL_Driver 时有效。 (按读取器件型号)

但是、在使用 LL_Driver 时、该方法不起作用。

这是我的问题、  

写入扩展寄存器的数据包是否正确?

2.我附加我编写的 LL_Driver 函数。 感谢您检查代码

void extend_Resgister_write (uint8_t actual_byte、uint8_t register_byte、uint8_t extend_register_byte、uint8_t value_byte)

int i=0;

uint8_t TX_Data[4]={0、};

//uint8_t RX_Data[4]={0、};

TX_Data[0]= ACT_BYTE|REGISTER_BYTE;

TX_Data[1]= extend_register_byte;

TX_Data[2]=值_BYTE;

LL_GPIO_ResetOutputPin (CS_GPIO_Port、CS_Pin);

for (i=0;i<4;i++)

while (!LL_SPI_IsActiveFlag_TXE (SPI1)){}
LL_SPI_TransmitData8 (SPI1、TX_Data[i]);

LL_GPIO_SetOutputPin (CS_GPIO_Port、CS_Pin);

期待您的建议。 谢谢你。

此致、

 -Jae-Heyeong Kim

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

    我还附加了我写的 LL_Driver 寄存器读取函数。  

    此函数也不起作用。 谢谢你

    void extend_Resgister_read (uint8_t actual_byte、uint8_t register_byte、uint8_t extend_register_byte)

    int i=0;

    uint8_t TX_Data[4]={0、};

    uint8_t RX_Data[4]={0、};

    TX_Data[0]= ACT_BYTE|REGISTER_BYTE;

    TX_Data[1]= extend_register_byte;

    LL_GPIO_ResetOutputPin (CS_GPIO_Port、CS_Pin);

    for (i=0;i<3;i++)

    while (!LL_SPI_IsActiveFlag_TXE (SPI1)){}
    LL_SPI_TransmitData8 (SPI1、TX_Data[i]);

    while (!LL_SPI_IsActiveFlag_RXNE (SPI1)){}
    RX_Data[I]=LL_SPI_ReceiveData8 (SPI1);

    LL_GPIO_SetOutputPin (CS_GPIO_Port、CS_Pin);

    printf (">Read_Data:0x%02x \r\n"、RX_Data[2]);

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

    对扩展寄存器空间的单个寄存器访问包含以下内容:

    命令:R/W 0 1 0 1 1 1 1

    地址:A7 A6 A5 A4 A3 A2 A1 A0

    FREQ0的地址= 0x0E

    如果要将0x01写入 FREQ0、SPI 上应输出以下3个字节:

    0x2F 0x0E 0x01

    Siri

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

    感谢您的善意。 我理解解释。 您能举一个扩展寄存器的例子吗?

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

    用户指南 第3.2.1节列出了该寄存器空间中的所有寄存器:

    寄存器空间访问和扩展寄存器空间访问

    Siri

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

    谢谢、我的问题得到了解决、非常感谢