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同步串行模式 TX &放大器;RX

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1024957/cc1120-cc1120-synchronous-serial-mode-tx-rx

器件型号:CC1120
主题中讨论的其他器件:CC1020

大家好、TI 社区、

我将向您介绍我开发与 CC1020射频模块兼容的 CC1120射频模块的项目。
下面是简要概述:
主要目的是取代我们在 CC1020上工作的旧品牌:

MCU -[CC1020] <--- 空气---- >[CC1020]- MCU

对于基于 CC1120但软件兼容的新产品(MCU 中的软件无法更改):

MCU -[MCUb-CC1120]<--空气---- >[CC1120-MCUb]- MCU

在我之前的帖子(大约2个月前 、CC1120EMK-420-470:CC1120 -同步模式- SMARTRXEBK)中、我询问了一些有关硬件配置的帮助。
我发现它不起作用的原因、它是一个石英偏差。 我必须重新编程新频率以补偿偏差。

这一次、我需要您有关"功能"的帮助。 CC1120编程为同步串行模式、没有同步/前导码检测/生成功能、因此我的时钟始终运行。
我有一个主发送器和一个主接收器。 我们有两种通信类型(对于我的测试,发送器每隔100ms 发送一次消息):
1路:   发射器-->接收器
-2路:                     -->
            发送      器接收器(在每次有效接收后发送响应)
                         <--
                  
接收器侧有一个 LED、可在收到的每个有效消息中改变状态。

使用"1向模式"时、LED 每隔100ms 更改一次状态(表示 无数据丢失)
使用"2路模式"时、LED 会改变状态、但不稳定(表示数据丢失)

我的问题是:
——频带 RX 和 TX 是否足以正确切换到各自的模式? 我是否需要对其他寄存器重新编程?

您将在随附的配置代码和我的主(简化)程序中找到。

如果您需要补充信息、请不要犹豫。

此致

查尔斯

/***************************************************************
 *  SmartRF Studio(tm) Export
 *
 *  Radio register settings specifed with C-code
 *  compatible #define statements.
 *
 *  RF device: CC1120
 *
 ***************************************************************/

#ifndef SMARTRF_CC1120_H
#define SMARTRF_CC1120_H

#define SMARTRF_RADIO_CC1120
#define SMARTRF_SETTING_IOCFG3             0xB0
#define SMARTRF_SETTING_IOCFG2             0x08
#define SMARTRF_SETTING_IOCFG1             0xB0
#define SMARTRF_SETTING_IOCFG0             0x09
#define SMARTRF_SETTING_SYNC3              0xAA
#define SMARTRF_SETTING_SYNC2              0xAA//0xD3  /**///TX
#define SMARTRF_SETTING_SYNC1              0xAA//0x91  /**///
#define SMARTRF_SETTING_SYNC0              0xAA//0xDA  /**///
#define SMARTRF_SETTING_SYNC_CFG1          0x1F//0x0B  /**///
#define SMARTRF_SETTING_SYNC_CFG0          0x03
#define SMARTRF_SETTING_DEVIATION_M        0x7F//0xA0
#define SMARTRF_SETTING_MODCFG_DEV_E       0x03//0x04
#define SMARTRF_SETTING_DCFILT_CFG         0x1C
#define SMARTRF_SETTING_PREAMBLE_CFG1      0x00
#define SMARTRF_SETTING_PREAMBLE_CFG0      0x2A
#define SMARTRF_SETTING_FREQ_IF_CFG        0x40
#define SMARTRF_SETTING_IQIC               0xC6
#define SMARTRF_SETTING_CHAN_BW            0x08
#define SMARTRF_SETTING_MDMCFG1            0x06
#define SMARTRF_SETTING_MDMCFG0            0x0A//0x05 /**/// 05 TX
#define SMARTRF_SETTING_SYMBOL_RATE2       0x73
#define SMARTRF_SETTING_SYMBOL_RATE1       0xA9
#define SMARTRF_SETTING_SYMBOL_RATE0       0x2A
#define SMARTRF_SETTING_AGC_REF            0x20
#define SMARTRF_SETTING_AGC_CS_THR         0x19
#define SMARTRF_SETTING_AGC_GAIN_ADJUST    0x00
#define SMARTRF_SETTING_AGC_CFG3           0x91
#define SMARTRF_SETTING_AGC_CFG2           0x20
#define SMARTRF_SETTING_AGC_CFG1           0x0A//0xAA /**/// AA in TX Freeze both AGC and RSSi update
#define SMARTRF_SETTING_AGC_CFG0           0xCF
#define SMARTRF_SETTING_FIFO_CFG           0x00
#define SMARTRF_SETTING_DEV_ADDR           0x00
#define SMARTRF_SETTING_SETTLING_CFG       0x03
#define SMARTRF_SETTING_FS_CFG             0x14
#define SMARTRF_SETTING_WOR_CFG1           0x08
#define SMARTRF_SETTING_WOR_CFG0           0x21
#define SMARTRF_SETTING_WOR_EVENT0_MSB     0x00
#define SMARTRF_SETTING_WOR_EVENT0_LSB     0x00
#define SMARTRF_SETTING_PKT_CFG2           0x01
#define SMARTRF_SETTING_PKT_CFG1           0x00
#define SMARTRF_SETTING_PKT_CFG0           0x20
#define SMARTRF_SETTING_RFEND_CFG1         0x0F
#define SMARTRF_SETTING_RFEND_CFG0         0x00
#define SMARTRF_SETTING_PA_CFG2            0x7F
#define SMARTRF_SETTING_PA_CFG1            0x56
#define SMARTRF_SETTING_PA_CFG0            0x7D
#define SMARTRF_SETTING_PKT_LEN            0x03
#define SMARTRF_SETTING_IF_MIX_CFG         0x00
#define SMARTRF_SETTING_FREQOFF_CFG        0x22
#define SMARTRF_SETTING_TOC_CFG            0x0B
#define SMARTRF_SETTING_MARC_SPARE         0x00
#define SMARTRF_SETTING_ECG_CFG            0x00
#define SMARTRF_SETTING_CFM_DATA_CFG       0x00
#define SMARTRF_SETTING_EXT_CTRL           0x01
#define SMARTRF_SETTING_RCCAL_FINE         0x00
#define SMARTRF_SETTING_RCCAL_COARSE       0x00
#define SMARTRF_SETTING_RCCAL_OFFSET       0x00
#define SMARTRF_SETTING_FREQOFF1           0x00
#define SMARTRF_SETTING_FREQOFF0           0x00
#define SMARTRF_SETTING_FREQ2              0x6C
#define SMARTRF_SETTING_FREQ1              0xAA//0xAB//0x46
#define SMARTRF_SETTING_FREQ0              0xB0//0x33//0x66
#define SMARTRF_SETTING_IF_ADC2            0x02
#define SMARTRF_SETTING_IF_ADC1            0xA6
#define SMARTRF_SETTING_IF_ADC0            0x04
#define SMARTRF_SETTING_FS_DIG1            0x00
#define SMARTRF_SETTING_FS_DIG0            0x5F
#define SMARTRF_SETTING_FS_CAL3            0x00
#define SMARTRF_SETTING_FS_CAL2            0x20
#define SMARTRF_SETTING_FS_CAL1            0x40
#define SMARTRF_SETTING_FS_CAL0            0x0E
#define SMARTRF_SETTING_FS_CHP             0x28
#define SMARTRF_SETTING_FS_DIVTWO          0x03
#define SMARTRF_SETTING_FS_DSM1            0x00
#define SMARTRF_SETTING_FS_DSM0            0x33
#define SMARTRF_SETTING_FS_DVC1            0xFF
#define SMARTRF_SETTING_FS_DVC0            0x17
#define SMARTRF_SETTING_FS_LBI             0x00
#define SMARTRF_SETTING_FS_PFD             0x50
#define SMARTRF_SETTING_FS_PRE             0x6E
#define SMARTRF_SETTING_FS_REG_DIV_CML     0x14
#define SMARTRF_SETTING_FS_SPARE           0xAC
#define SMARTRF_SETTING_FS_VCO4            0x14
#define SMARTRF_SETTING_FS_VCO3            0x00
#define SMARTRF_SETTING_FS_VCO2            0x00
#define SMARTRF_SETTING_FS_VCO1            0x00
#define SMARTRF_SETTING_FS_VCO0            0xB4
#define SMARTRF_SETTING_GBIAS6             0x00
#define SMARTRF_SETTING_GBIAS5             0x02
#define SMARTRF_SETTING_GBIAS4             0x00
#define SMARTRF_SETTING_GBIAS3             0x00
#define SMARTRF_SETTING_GBIAS2             0x10
#define SMARTRF_SETTING_GBIAS1             0x00
#define SMARTRF_SETTING_GBIAS0             0x00
#define SMARTRF_SETTING_IFAMP              0x01
#define SMARTRF_SETTING_LNA                0x01
#define SMARTRF_SETTING_RXMIX              0x01
#define SMARTRF_SETTING_XOSC5              0x0E
#define SMARTRF_SETTING_XOSC4              0xA0
#define SMARTRF_SETTING_XOSC3              0x03
#define SMARTRF_SETTING_XOSC2              0x04
#define SMARTRF_SETTING_XOSC1              0x03
#define SMARTRF_SETTING_XOSC0              0x00
#define SMARTRF_SETTING_ANALOG_SPARE       0x00
#define SMARTRF_SETTING_PA_CFG3            0x00
#define SMARTRF_SETTING_WOR_TIME1          0x00
#define SMARTRF_SETTING_WOR_TIME0          0x00
#define SMARTRF_SETTING_WOR_CAPTURE1       0x00
#define SMARTRF_SETTING_WOR_CAPTURE0       0x00
#define SMARTRF_SETTING_BIST               0x00
#define SMARTRF_SETTING_DCFILTOFFSET_I1    0x00
#define SMARTRF_SETTING_DCFILTOFFSET_I0    0x00
#define SMARTRF_SETTING_DCFILTOFFSET_Q1    0x00
#define SMARTRF_SETTING_DCFILTOFFSET_Q0    0x00
#define SMARTRF_SETTING_IQIE_I1            0x00
#define SMARTRF_SETTING_IQIE_I0            0x00
#define SMARTRF_SETTING_IQIE_Q1            0x00
#define SMARTRF_SETTING_IQIE_Q0            0x00
#define SMARTRF_SETTING_RSSI1              0x80
#define SMARTRF_SETTING_RSSI0              0x00
#define SMARTRF_SETTING_MARCSTATE          0x41
#define SMARTRF_SETTING_LQI_VAL            0x00
#define SMARTRF_SETTING_PQT_SYNC_ERR       0xFF
#define SMARTRF_SETTING_DEM_STATUS         0x00
#define SMARTRF_SETTING_FREQOFF_EST1       0x00
#define SMARTRF_SETTING_FREQOFF_EST0       0x00
#define SMARTRF_SETTING_AGC_GAIN3          0x00
#define SMARTRF_SETTING_AGC_GAIN2          0xD1
#define SMARTRF_SETTING_AGC_GAIN1          0x00
#define SMARTRF_SETTING_AGC_GAIN0          0x3F
#define SMARTRF_SETTING_CFM_RX_DATA_OUT    0x00
#define SMARTRF_SETTING_CFM_TX_DATA_IN     0x00
#define SMARTRF_SETTING_ASK_SOFT_RX_DATA   0x30
#define SMARTRF_SETTING_RNDGEN             0x7F
#define SMARTRF_SETTING_MAGN2              0x00
#define SMARTRF_SETTING_MAGN1              0x00
#define SMARTRF_SETTING_MAGN0              0x00
#define SMARTRF_SETTING_ANG1               0x00
#define SMARTRF_SETTING_ANG0               0x00
#define SMARTRF_SETTING_CHFILT_I2          0x08
#define SMARTRF_SETTING_CHFILT_I1          0x00
#define SMARTRF_SETTING_CHFILT_I0          0x00
#define SMARTRF_SETTING_CHFILT_Q2          0x00
#define SMARTRF_SETTING_CHFILT_Q1          0x00
#define SMARTRF_SETTING_CHFILT_Q0          0x00
#define SMARTRF_SETTING_GPIO_STATUS        0x00
#define SMARTRF_SETTING_FSCAL_CTRL         0x01
#define SMARTRF_SETTING_PHASE_ADJUST       0x00
#define SMARTRF_SETTING_PARTNUMBER         0x48
#define SMARTRF_SETTING_PARTVERSION        0x21
#define SMARTRF_SETTING_SERIAL_STATUS      0x08
#define SMARTRF_SETTING_MODEM_STATUS1      0x10
#define SMARTRF_SETTING_MODEM_STATUS0      0x00
#define SMARTRF_SETTING_MARC_STATUS1       0x00
#define SMARTRF_SETTING_MARC_STATUS0       0x00
#define SMARTRF_SETTING_PA_IFAMP_TEST      0x00
#define SMARTRF_SETTING_FSRF_TEST          0x00
#define SMARTRF_SETTING_PRE_TEST           0x00
#define SMARTRF_SETTING_PRE_OVR            0x00
#define SMARTRF_SETTING_ADC_TEST           0x00
#define SMARTRF_SETTING_DVC_TEST           0x0B
#define SMARTRF_SETTING_ATEST              0x40
#define SMARTRF_SETTING_ATEST_LVDS         0x00
#define SMARTRF_SETTING_ATEST_MODE         0x00
#define SMARTRF_SETTING_XOSC_TEST1         0x3C
#define SMARTRF_SETTING_XOSC_TEST0         0x00
#define SMARTRF_SETTING_RXFIRST            0x00
#define SMARTRF_SETTING_TXFIRST            0x00
#define SMARTRF_SETTING_RXLAST             0x00
#define SMARTRF_SETTING_TXLAST             0x00
#define SMARTRF_SETTING_NUM_TXBYTES        0x00
#define SMARTRF_SETTING_NUM_RXBYTES        0x00
#define SMARTRF_SETTING_FIFO_NUM_TXBYTES   0x0F
#define SMARTRF_SETTING_FIFO_NUM_RXBYTES   0x00

#endif

while(1){
	if(End_Send){													/* response sent */
		End_Send=0;
		switch(Config[HF_MODE]){									
			case 0x00:{												/*1way*/
				//ret_fct = (unsigned char)(SetupCC1020RX(HF[0x17],0x00U));		/*CC1020*/
				Write_StrobeRegister(CC112X_SRX); 								/*CC1120*/
				What_Do_Hf=Receive_Mode;							/*receive in interrupt*/
				EX0=1;												/*enable interrupt for receiving*/
				break;
			}
			case 0x01:{												/*2way*/
				What_Do_Hf=Receive_Mode;							/*receive in interrupt*/
				//ret_fct = (unsigned char)(SetupCC1020RX(HF[0x17],0x00U));		/*CC1020*/
				Write_StrobeRegister(CC112X_SRX); 								/*CC1120*/
				EX0=1;												/*enable interrupt for receiving*/
				break;
			}
			default:{										   		/*do nothing*/
				break;
			}
		}
	}
	if(End_Receive){												/*Message received*/
		End_Receive=0;											
		EX0=0;
		switch(Config[HF_MODE]){									
			case 0x00:{												/*1way*/
				What_Do_Hf=Receive_Mode;							/*receive in interrupt*/
				Write_StrobeRegister(CC112X_SRX); 					/*CC1120*/
				EX0=1;												/*enable interrupt for receiving*/
				break;
			}
			case 0x01:{												/*2way*/
				/* coding response */

				What_Do_Hf=Transmit_Mode;							/*transmit in interrupt*/			
				//ret_fct = (unsigned char)(SetupCC1020TX(HF[0x17],0xFFU));		/*CC1020*/
				Write_StrobeRegister(CC112X_STX); 								/*CC1120*/
				pos_bit=0U;											
				EX0=1;												/*enable interrupt for transmitting*/
				break;
			}
			default:{										   		/*do nothing*/
				break;
			}
		}
	}
	if(MESS_READY){													/*correct address received*/
		for(i=0U;i!=NBRE_BYTE_IN;i++){								/*copy dans variable de travail*/
			data_all[i]=data_in_tmp[i];
			data_in_tmp[i]=0xF0U;
		}
		MESS_READY=0U;												/*clear flag*/

		if((crc_tmp==0x00U)&&(count_start==count_start_mini)){		/*CRC ok*/
			/* decoding message */			
			LED^=1;
			for(i=0U;i!=NBRE_BYTE_IN;i++){							/*reset variable travail*/
				data_all[i]=0xFBU;
			}
		}
	}
}

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

    当在 RX 和 TX 之间改变模式时、不需要对任何寄存器进行重新编程。 生成设置时、应使用 SmartRF Studio 和 CONT. RX、然后对 RX 和 TX 使用相同的寄存器。

    Siri

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

    您好、Siri、

    这就是我的想法、我也是这样做的。 您是否对如何解决问题有任何想法?

    感谢您的回答

    此致

    查尔斯

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

    您有什么问题? 在您的第一个帖子中、您只需声明您正在串行模式下使用 CC1120、然后您会询问您是否可以在 RX 和 TX 中使用相同的寄存器。

    Siri

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

    您好!

    当我切换 HF 模式(从 RX 切换到 TX 或从 TX 切换到 RX)时、数据会丢失

    在"单向"模式下、我在开始时对寄存器进行一次编程、然后再也不会对寄存器进行编程(模块保持在 RX 模式)、并且接收效果完美(每100ms 1个"串行数据包")

    在"2路"模式下、我在开始时对寄存器进行编程、然后在接收到"串行数据包"后将模块切换为 TX。 在我传输了一定数量的位后、我将模块切换回 RX。 在此模式下、我看到我丢失了一些 RX 数据包。

    编辑

    我进行了以下测试(在“1路”模式下):

    -在收到每条消息后访问寄存器(RSSI1)-->无数据丢失

    -在收到每条消息后选择"RX"(由于模块在 RX 中编程、因此不起作用)-->开始释放一些数据

    - 在收到每条消息后选通"SNOP"->无数据丢失。

    我发送13字节数据、3字节前导码(AA-AA-AA)和3字节同步(D3-91-DA)。发送数据的持续时间约为15ms。 每次传输之间的延迟为100ms、我不能丢失任何数据。

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

    我在此处测试了串行示例:

    https://www.ti.com/lit/zip/swrc253

    并对其进行了修改、以便在每个接收到的数据包之间执行 TX、并且由于在此处插入 TX、我没有遇到任何数据包丢失。

    由于我没有与您相同的硬件或软件、因此我无法知道导致您问题的原因。

    我强烈建议您使用 SmartRF Studio (RX 设置)中的建议设置、并首先测试已知良好的软件。 您还应首先使用 CC1120作为发送器(使用 SmartRF Studio)。 确认一切正常后、您可以继续使用 CC1020替换发送器。

    如果您现在开始看到问题、我们知道问题与 CC1020、CC1120通信有关、而不是与软件有关。

    BR

    Siri

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

    感谢您的支持 Siri、

    我将尝试您的建议、并将结果返回给您

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

    您好!

    我回来时取得了一些成绩、但不幸的是、没有好消息。

    "我强烈建议您使用 SmartRF Studio (RX 设置)中的建议设置"、这就是我自开始以来所做的操作。

    我使用2个 CC1120模块运行了测试、如以下设置(均处于同步串行模式-盲模式):

    因为我遇到了相同的问题(丢失 RX 端的数据)。 我使用评估板进行1侧切换、如下所示:

    在设置1中:

    -测试1:使用 smartRFStudio 和 MCU + CC1120在 TX 中锁定评估板时保持 RX -->好的

    -测试2:使用 smartRFStudio 和 MCU + CC1120在 TX 中锁定的评估板在每次接收后响应-->不正常

    在设置2中:

    -测试1:MCU + CC1120保持在 TX 状态,评估板保持在 RX 状态并使用 smartRFStudio -->好的

    -测试2:MCU + CC1120在发送每条消息后进入 RX (我也在空闲状态下进行测试、结果相同)、评估板在使用 smartRFStudio 的 RX 中停留->不正常

    由于您的测试中没有像我一样的问题、我需要使用2个评估板进行测试、但我如何编辑代码、以便评估板(在 Rx 侧) 在收到消息后切换到 TX、然后在传输结束后立即切换回 Rx。

    编辑:

    在设置2中、我在 smartRFStudio (连续 RX)上有 RSSI 图、在测试1中、由于 TX 模块永久处于 TX 模式、我的 RSSI 保持高电平。 在测试2中、我看到 RSSI 的尖峰(每100ms 1个)、但有时尖峰具有"不良形状"(被切割为2个尖峰、较短的尖峰...) 可能与我的问题有关? 或者它只是一个视觉缺陷?

    此致

    查尔斯

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

    我认为、我们在这里取得任何进展的唯一方法是、如果您能够重现您在我们的硬件上看到的问题、以便我可以在这里重现这些问题。

    由于问题出在 RX 端、因此您可以在发送器端使用 SmartRF Studio + TRXEB w/CC1120。 此外、您不应使用单独的 MCU、只需让 SmartRF Studio 以数据包模式传输具有要使用的设置的数据包即可。

    在 RX 端、您应该使用 https://www.ti.com/lit/zip/swrc253中的串行示例

    同样、没有额外的 MCU、只需按原样运行示例、射频设置与发送器相同。

    当它工作时、您可以在 RX 侧的每个数据包之间选通 STX。 不必实际传输真实数据包、让无线电进入 TX 模式并在返回 RX 之前保持一段时间就足够了。

    一旦您确认这也可以正常工作(这是我测试过的)、您需要一次更改此演示设置一步、直到您能够重现您看到的问题。 这样就更容易确定问题的确切原因。

    从一个工作正常的人迁移到另一个工作正常的人、然后以小步骤更改代码、直至其失败、这是查找问题的更好方法、而不是尝试修复失败的问题。

    BR

    Siri

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

    您好、Siri、

    感谢您的回复。 我将尝试您的设置,并希望得到一些积极的结果:)

    此致

    查尔斯

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

    只是一个简单的问题:我在数据表中注意到(同步串行模式中的 IO 配置)

    SmartRFStudio 推荐:

    #define SmartRF_setting_IOCFG3            0xB0  
    #define SmartRF_setting_IOCFG2            0x08
    #define SmartRF_setting_IOCFG1            0xB0
    #define SmartRF_setting_IOCFG0            0x09

    在您的软件中(在 TX 或 RX 中):

    #define SmartRF_setting_IOCFG3            0x08
    #define SmartRF_setting_IOCFG2            0x09
    #define SmartRF_setting_IOCFG1            0xB0
    #define SmartRF_setting_IOCFG0            0x30

    此配置是否有任何原因? 您能告诉我数据表的含义吗?

    BR

    查尔斯

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

    不知道如何用与用户指南中已经说明的不同的方式来解释这一点,但我会尝试。

    要将其中一个 GPIO 用作输入、该 GPIO 需要三态。

    这是通过设置 IOCFGx = 0x30来完成的。

    表9显示了当三态时、GPIO0将用作 serial_TX。

    查看我的配置、这意味着:

    #define SMARTRF_SETTING_IOCFG3  0x08    // SERIAL_CLK       
    #define SMARTRF_SETTING_IOCFG2  0x09    // SERIAL_RX
    #define SMARTRF_SETTING_IOCFG1  0xB0
    #define SMARTRF_SETTING_IOCFG0  0x30    // TRI_STATE, hence SERIAL_TX
    

    这意味着您在 GPIO3上有串行时钟、在 GPIO0上有 TX 数据输入、在 GPIO2上有 RX 数据输出。

    用户指南还指出:

    如果 GPIO0被定义为串行时钟或串行数据输出、那么 GPIO0将在 TX 中自动变为三态

    (IOCFG0.GPIO0_CFG = 8或9)。 如果不是这种情况、GPIO0必须通过设置 IOCFG0.GPIO0_CFG = HIGHZ (48)手动三态。

    Studio 设置利用以下功能:

    #define SMARTRF_SETTING_IOCFG3  0xB0 
    #define SMARTRF_SETTING_IOCFG2  0x08    // SERIAL_CLK       
    #define SMARTRF_SETTING_IOCFG1  0xB0
    #define SMARTRF_SETTING_IOCFG0  0x09    // SERIAL_RX (automatically tri-stated in TX,
                                            // hence SERIAL_TX when in TX mode)
                                            

    在这种情况下、GPIO2上有串行时钟、GPIO0将用于 RX 时的 RX 数据、而在 TX 时用作 TX 数据的输入。

    BR

    Siri

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

    你(们)好

    您能否向我发送您的发送器配置?

    我无法使它正常工作。 是否可以在发送器中以数据包(FIFO)进行通信,并在串行 RX 中进行接收?

    另外,如何使用演示板上的串行示例?

    BR

    查尔斯

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

    对于运输槽、我使用了 SmartRF Studio、并选择了与示例相同的数据速率。 请注意、该示例支持1200、4800和38400 kbps、具体取决于您的定义。 您将在 SmartRF Studio 中找到相同的设置(如果选择1200、请使用50kHz、1200设置)。

    在接收端、您使用同步串行 RX 配置、这将使用与 SmartRF Studio 相同的数据包格式。

    不确定您的最后一个问题是什么意思。 您只需下载我提到的包含 CC1120EM 的 TrxEB 示例、然后启动代码。

    LCD 上显示接收到的具有 CRC OK 的数据包的数量。

    Siri

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

    您好、Siri、

    我的最后一个问题是,我是否需要程序员将软件发送到电路板的 MCU 内部,或者所有内容都已正确编程?

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

    您需要使用想要使用的设置编译/构建同步串行示例、然后将代码下载到 TrxEB 上的 MSP430。

    有关更多详细信息、请参阅用户指南。

    https://www.ti.com/lit/swru294

    Siri

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

    您好、Siri、

    遗憾的是、我没有将代码下载到 DE MSP430的硬件、也没有访问 IDE 来修改代码。

    因此、我尝试另一种方法:

    我从使用 CC1120但处于 FIFO 模式的已知软件开始。 我注意到了串行和 FIFO 模式之间参数和软件的每次变化。

    /***************************************************************
     *  SmartRF Studio(tm) Export
     *
     *  Radio register settings specifed with C-code
     *  compatible #define statements.
     *
     *  RF device: CC1120
     *
     ***************************************************************/
    
    #ifndef SMARTRF_CC1120_H
    #define SMARTRF_CC1120_H					    //serial//fifo
    
    #define SMARTRF_RADIO_CC1120
    #define SMARTRF_SETTING_IOCFG3             0xB0
    #define SMARTRF_SETTING_IOCFG2             0x08//0x08//0x06	  	interrupt
    #define SMARTRF_SETTING_IOCFG1             0xB0
    #define SMARTRF_SETTING_IOCFG0             0x09//0x09//0xB0		data
    #define SMARTRF_SETTING_SYNC3              0xAA//0xAA//0x93		sync word
    #define SMARTRF_SETTING_SYNC2              0xAA//0xAA//0x0B		sync word
    #define SMARTRF_SETTING_SYNC1              0xAA//0xAA//0x51		sync word
    #define SMARTRF_SETTING_SYNC0              0xAA//0xAA//0xDE		sync word
    #define SMARTRF_SETTING_SYNC_CFG1          0x1F//0x1F//0x0B		sync threshold
    #define SMARTRF_SETTING_SYNC_CFG0          0x03//0x03//0x17		0x03 no sync word 0x17 32 bits sync word
    #define SMARTRF_SETTING_DEVIATION_M        0x7F
    #define SMARTRF_SETTING_MODCFG_DEV_E       0x03
    #define SMARTRF_SETTING_DCFILT_CFG         0x1C
    #define SMARTRF_SETTING_PREAMBLE_CFG1      0x00//0x00//0x18	  	0x00 pattern 0xAA no preamble 0x18 pattern 0xAA 4 bytes preamble
    #define SMARTRF_SETTING_PREAMBLE_CFG0      0x2A
    #define SMARTRF_SETTING_FREQ_IF_CFG        0x40
    #define SMARTRF_SETTING_IQIC               0xC6
    #define SMARTRF_SETTING_CHAN_BW            0x08
    #define SMARTRF_SETTING_MDMCFG1            0x06//0x06//0x46	 	0x06 serial mode 0x46 fifo mode	
    #define SMARTRF_SETTING_MDMCFG0            0x0A//0x0A//0x05		0x0A viterbi disable extended transparent data filter enable 0x05 viterbi enable all filter disable
    #define SMARTRF_SETTING_SYMBOL_RATE2       0x73
    #define SMARTRF_SETTING_SYMBOL_RATE1       0xA9
    #define SMARTRF_SETTING_SYMBOL_RATE0       0x2A
    #define SMARTRF_SETTING_AGC_REF            0x20
    #define SMARTRF_SETTING_AGC_CS_THR         0x19
    #define SMARTRF_SETTING_AGC_GAIN_ADJUST    0x00
    #define SMARTRF_SETTING_AGC_CFG3           0x91
    #define SMARTRF_SETTING_AGC_CFG2           0x20
    #define SMARTRF_SETTING_AGC_CFG1           0x0A//0x0A//0xA9	 	0x0A 40 samples wait time 32 samples AGC integration window 0xA9 32 samples wait time 32 samples AGC integration window	freeze AGC & RSSi after sync word detection
    #define SMARTRF_SETTING_AGC_CFG0           0xCF
    #define SMARTRF_SETTING_FIFO_CFG           0x00
    #define SMARTRF_SETTING_DEV_ADDR           0x00
    #define SMARTRF_SETTING_SETTLING_CFG       0x03
    #define SMARTRF_SETTING_FS_CFG             0x14
    #define SMARTRF_SETTING_WOR_CFG1           0x08
    #define SMARTRF_SETTING_WOR_CFG0           0x21
    #define SMARTRF_SETTING_WOR_EVENT0_MSB     0x00
    #define SMARTRF_SETTING_WOR_EVENT0_LSB     0x00
    #define SMARTRF_SETTING_PKT_CFG2           0x05//0x05//0x00		0x05 serial mode indicate CCA if RSSI< threshold 0x00 fifo mode CCA always OK
    #define SMARTRF_SETTING_PKT_CFG1           0x00//0x00//0x05	  	0x00 no status byte & no crc 0x05 status byte appended & crc generated/decoded
    #define SMARTRF_SETTING_PKT_CFG0           0x20//0x20//0x00		0x00 fixed packet mode 0x20 variable packet mode 
    #define SMARTRF_SETTING_RFEND_CFG1         0x0F
    #define SMARTRF_SETTING_RFEND_CFG0         0x00
    #define SMARTRF_SETTING_PA_CFG2            0x7F
    #define SMARTRF_SETTING_PA_CFG1            0x56
    #define SMARTRF_SETTING_PA_CFG0            0x7D
    #define SMARTRF_SETTING_PKT_LEN            NBRE_BYTE_OUT
    #define SMARTRF_SETTING_IF_MIX_CFG         0x00
    #define SMARTRF_SETTING_FREQOFF_CFG        0x22
    #define SMARTRF_SETTING_TOC_CFG            0x0B
    #define SMARTRF_SETTING_MARC_SPARE         0x00
    #define SMARTRF_SETTING_ECG_CFG            0x00
    #define SMARTRF_SETTING_CFM_DATA_CFG       0x00
    #define SMARTRF_SETTING_EXT_CTRL           0x01
    #define SMARTRF_SETTING_RCCAL_FINE         0x00
    #define SMARTRF_SETTING_RCCAL_COARSE       0x00
    #define SMARTRF_SETTING_RCCAL_OFFSET       0x00
    #define SMARTRF_SETTING_FREQOFF1           0x00
    #define SMARTRF_SETTING_FREQOFF0           0x00
    #define SMARTRF_SETTING_FREQ2              0x6C
    #define SMARTRF_SETTING_FREQ1              0xAA
    #define SMARTRF_SETTING_FREQ0              0xB0
    #define SMARTRF_SETTING_IF_ADC2            0x02
    #define SMARTRF_SETTING_IF_ADC1            0xA6
    #define SMARTRF_SETTING_IF_ADC0            0x04
    #define SMARTRF_SETTING_FS_DIG1            0x00
    #define SMARTRF_SETTING_FS_DIG0            0x5F
    #define SMARTRF_SETTING_FS_CAL3            0x00
    #define SMARTRF_SETTING_FS_CAL2            0x20
    #define SMARTRF_SETTING_FS_CAL1            0x40
    #define SMARTRF_SETTING_FS_CAL0            0x0E
    #define SMARTRF_SETTING_FS_CHP             0x28
    #define SMARTRF_SETTING_FS_DIVTWO          0x03
    #define SMARTRF_SETTING_FS_DSM1            0x00
    #define SMARTRF_SETTING_FS_DSM0            0x33
    #define SMARTRF_SETTING_FS_DVC1            0xFF
    #define SMARTRF_SETTING_FS_DVC0            0x17
    #define SMARTRF_SETTING_FS_LBI             0x00
    #define SMARTRF_SETTING_FS_PFD             0x50
    #define SMARTRF_SETTING_FS_PRE             0x6E
    #define SMARTRF_SETTING_FS_REG_DIV_CML     0x14
    #define SMARTRF_SETTING_FS_SPARE           0xAC
    #define SMARTRF_SETTING_FS_VCO4            0x14
    #define SMARTRF_SETTING_FS_VCO3            0x00
    #define SMARTRF_SETTING_FS_VCO2            0x00
    #define SMARTRF_SETTING_FS_VCO1            0x00
    #define SMARTRF_SETTING_FS_VCO0            0xB4
    #define SMARTRF_SETTING_GBIAS6             0x00
    #define SMARTRF_SETTING_GBIAS5             0x02
    #define SMARTRF_SETTING_GBIAS4             0x00
    #define SMARTRF_SETTING_GBIAS3             0x00
    #define SMARTRF_SETTING_GBIAS2             0x10
    #define SMARTRF_SETTING_GBIAS1             0x00
    #define SMARTRF_SETTING_GBIAS0             0x00
    #define SMARTRF_SETTING_IFAMP              0x01
    #define SMARTRF_SETTING_LNA                0x01
    #define SMARTRF_SETTING_RXMIX              0x01
    #define SMARTRF_SETTING_XOSC5              0x0E
    #define SMARTRF_SETTING_XOSC4              0xA0
    #define SMARTRF_SETTING_XOSC3              0x03
    #define SMARTRF_SETTING_XOSC2              0x04
    #define SMARTRF_SETTING_XOSC1              0x03
    #define SMARTRF_SETTING_XOSC0              0x00
    #define SMARTRF_SETTING_ANALOG_SPARE       0x00
    #define SMARTRF_SETTING_PA_CFG3            0x00
    #define SMARTRF_SETTING_WOR_TIME1          0x00
    #define SMARTRF_SETTING_WOR_TIME0          0x00
    #define SMARTRF_SETTING_WOR_CAPTURE1       0x00
    #define SMARTRF_SETTING_WOR_CAPTURE0       0x00
    #define SMARTRF_SETTING_BIST               0x00
    #define SMARTRF_SETTING_DCFILTOFFSET_I1    0x00
    #define SMARTRF_SETTING_DCFILTOFFSET_I0    0x00
    #define SMARTRF_SETTING_DCFILTOFFSET_Q1    0x00
    #define SMARTRF_SETTING_DCFILTOFFSET_Q0    0x00
    #define SMARTRF_SETTING_IQIE_I1            0x00
    #define SMARTRF_SETTING_IQIE_I0            0x00
    #define SMARTRF_SETTING_IQIE_Q1            0x00
    #define SMARTRF_SETTING_IQIE_Q0            0x00
    #define SMARTRF_SETTING_RSSI1              0x80
    #define SMARTRF_SETTING_RSSI0              0x00
    #define SMARTRF_SETTING_MARCSTATE          0x41
    #define SMARTRF_SETTING_LQI_VAL            0x00
    #define SMARTRF_SETTING_PQT_SYNC_ERR       0xFF
    #define SMARTRF_SETTING_DEM_STATUS         0x00
    #define SMARTRF_SETTING_FREQOFF_EST1       0x00
    #define SMARTRF_SETTING_FREQOFF_EST0       0x00
    #define SMARTRF_SETTING_AGC_GAIN3          0x00
    #define SMARTRF_SETTING_AGC_GAIN2          0xD1
    #define SMARTRF_SETTING_AGC_GAIN1          0x00
    #define SMARTRF_SETTING_AGC_GAIN0          0x3F
    #define SMARTRF_SETTING_CFM_RX_DATA_OUT    0x00
    #define SMARTRF_SETTING_CFM_TX_DATA_IN     0x00
    #define SMARTRF_SETTING_ASK_SOFT_RX_DATA   0x30
    #define SMARTRF_SETTING_RNDGEN             0x7F
    #define SMARTRF_SETTING_MAGN2              0x00
    #define SMARTRF_SETTING_MAGN1              0x00
    #define SMARTRF_SETTING_MAGN0              0x00
    #define SMARTRF_SETTING_ANG1               0x00
    #define SMARTRF_SETTING_ANG0               0x00
    #define SMARTRF_SETTING_CHFILT_I2          0x08
    #define SMARTRF_SETTING_CHFILT_I1          0x00
    #define SMARTRF_SETTING_CHFILT_I0          0x00
    #define SMARTRF_SETTING_CHFILT_Q2          0x00
    #define SMARTRF_SETTING_CHFILT_Q1          0x00
    #define SMARTRF_SETTING_CHFILT_Q0          0x00
    #define SMARTRF_SETTING_GPIO_STATUS        0x00
    #define SMARTRF_SETTING_FSCAL_CTRL         0x01
    #define SMARTRF_SETTING_PHASE_ADJUST       0x00
    #define SMARTRF_SETTING_PARTNUMBER         0x48
    #define SMARTRF_SETTING_PARTVERSION        0x21
    #define SMARTRF_SETTING_SERIAL_STATUS      0x08//0x08//0x00	 	0x08  synchronizer for IO enable 0x00 synchronizer for IO disable
    #define SMARTRF_SETTING_MODEM_STATUS1      0x10
    #define SMARTRF_SETTING_MODEM_STATUS0      0x00
    #define SMARTRF_SETTING_MARC_STATUS1       0x00
    #define SMARTRF_SETTING_MARC_STATUS0       0x00
    #define SMARTRF_SETTING_PA_IFAMP_TEST      0x00
    #define SMARTRF_SETTING_FSRF_TEST          0x00
    #define SMARTRF_SETTING_PRE_TEST           0x00
    #define SMARTRF_SETTING_PRE_OVR            0x00
    #define SMARTRF_SETTING_ADC_TEST           0x00
    #define SMARTRF_SETTING_DVC_TEST           0x0B
    #define SMARTRF_SETTING_ATEST              0x40
    #define SMARTRF_SETTING_ATEST_LVDS         0x00
    #define SMARTRF_SETTING_ATEST_MODE         0x00
    #define SMARTRF_SETTING_XOSC_TEST1         0x3C
    #define SMARTRF_SETTING_XOSC_TEST0         0x00
    #define SMARTRF_SETTING_RXFIRST            0x00
    #define SMARTRF_SETTING_TXFIRST            0x00
    #define SMARTRF_SETTING_RXLAST             0x00
    #define SMARTRF_SETTING_TXLAST             0x00
    #define SMARTRF_SETTING_NUM_TXBYTES        0x00
    #define SMARTRF_SETTING_NUM_RXBYTES        0x00
    #define SMARTRF_SETTING_FIFO_NUM_TXBYTES   0x0F
    #define SMARTRF_SETTING_FIFO_NUM_RXBYTES   0x00
    
    #endif
    

    因此、设置是2个 CC1120模块使用与之前相同的 LED 指示相互通信(在 Rx 侧、每条有效消息切换)

    在 FIFO 模式下没有问题、但当我切换到同步串行模式时、问题就会开始。 我在串行模式下使用示波器测量了一些我无法解释的信号。

    来自 GPIO0的探头1 (顶部)信号(从发送器接收到的数据)

    LED 上的探头2 (底部)信号(在每条消息之后- CRC 校验之前切换)

    scope

    当一切正常时、底部信号在每个数据包后切换。

    您可以在上面看到、信号丢失了2个数据包。 事实上、我在 RX 线上看到数据包、这是否意味着模块处于正确的模式(在本例中为 RX)?

    如果是,我的地址检查可能有问题,在串行模式下是否可能出现位同步问题?

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

    我真的很抱歉、但我很难理解您的不同设置以及您的测试内容/方式。

    您说您无法将代码下载到 MSP 430、因此我假设您在使用连接到 CC1120的您自己的 MCU 进行测试。

    您仍可以测试“我们的”代码示例,但需要移植这些示例才能在 MCU 上运行

    然后、您应该测试以下内容:

    使用 SmartRF Studio + TrxEB (带 CC1120)作为发送器。

    对于接收器、首先编写一个使用 FIFO 模式的小型测试程序、并确认您可以接收所有消息。

    第二、移植我提到的串行示例、以便在您的 MCU 上运行。

    使用示例中的默认设置并使用 Studio 作为发送器进行测试。

    我在代码示例中添加了切换 LED、并且能够接收所有数据包的位置:

    您还可以使用易于识别的有效载荷模式进行测试。 然后、您可以手动监控数据包、以查看对讲机正在接收传输的数据。

    使用串行示例中的默认设置、对讲机会自动为您执行同步搜索、因此在接收到同步之前不会在 GPIO 上输出时钟。

    我从 SmartRF Studio 传输了以下数据包:

    前导码:0xAAAAAA

    SYNC:0xD39151DE

    长度:0x06

    有效载荷:0xFFAACCFF3355

    CRC:2字节

    如下所示、您可以从传输的数据中识别长度和有效载荷。

    Siri

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

    您好!

    感谢您的支持。 我将讨论您的示例。 有了你给我的信息,我不会失望的!

    我会注意到这种情况是"已解决"的

    此致

    查尔斯