fix: 修复上电后无法发送信号的问题;修改lmk04828配置寄存器数量

1. 具体现象为先配置RFDC,再配置时钟芯片后导致时钟断开,无发送信号,切换配置RFDC到时钟配置后任无法解决问题,新增RFDC starup函数重置RFDC tiles后DAC可以正常发送信号; 2. 排查过程中发现实际寄存器数量较少,故修该.
This commit is contained in:
2024-11-08 21:52:50 +08:00
parent d555d25452
commit 64bfa1ef96
7 changed files with 59 additions and 58 deletions
Binary file not shown.
@@ -258,11 +258,11 @@
"C_PROBE_OUT7_INIT_VAL": [ { "value": "0x1", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT6_INIT_VAL": [ { "value": "0x000000FF", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT5_INIT_VAL": [ { "value": "0xFF", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT4_INIT_VAL": [ { "value": "0x3", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT4_INIT_VAL": [ { "value": "0x0", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT3_INIT_VAL": [ { "value": "0x3", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT2_INIT_VAL": [ { "value": "0x0", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT1_INIT_VAL": [ { "value": "0x0", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT0_INIT_VAL": [ { "value": "0x0", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT0_INIT_VAL": [ { "value": "0x2", "value_src": "user", "resolve_type": "user", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT255_WIDTH": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
"C_PROBE_OUT254_WIDTH": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
"C_PROBE_OUT253_WIDTH": [ { "value": "1", "resolve_type": "user", "format": "long", "usage": "all" } ],
@@ -1316,11 +1316,11 @@
"C_PROBE_OUT253_WIDTH": [ { "value": "1", "resolve_type": "dependent", "format": "long", "usage": "all" } ],
"C_PROBE_OUT254_WIDTH": [ { "value": "1", "resolve_type": "dependent", "format": "long", "usage": "all" } ],
"C_PROBE_OUT255_WIDTH": [ { "value": "1", "resolve_type": "dependent", "format": "long", "usage": "all" } ],
"C_PROBE_OUT0_INIT_VAL": [ { "value": "0x0", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT0_INIT_VAL": [ { "value": "0x2", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT1_INIT_VAL": [ { "value": "0x0", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT2_INIT_VAL": [ { "value": "0x00000000", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT3_INIT_VAL": [ { "value": "0x3", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT4_INIT_VAL": [ { "value": "0x3", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT4_INIT_VAL": [ { "value": "0x0", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT5_INIT_VAL": [ { "value": "0xFF", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT6_INIT_VAL": [ { "value": "0x000000FF", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
"C_PROBE_OUT7_INIT_VAL": [ { "value": "0x1", "resolve_type": "dependent", "format": "bitString", "usage": "all" } ],
+6 -6
View File
@@ -66,13 +66,13 @@
<Option Name="WTVcsLaunchSim" Val="0"/>
<Option Name="WTRivieraLaunchSim" Val="0"/>
<Option Name="WTActivehdlLaunchSim" Val="0"/>
<Option Name="WTXSimExportSim" Val="127"/>
<Option Name="WTModelSimExportSim" Val="127"/>
<Option Name="WTQuestaExportSim" Val="127"/>
<Option Name="WTXSimExportSim" Val="128"/>
<Option Name="WTModelSimExportSim" Val="128"/>
<Option Name="WTQuestaExportSim" Val="128"/>
<Option Name="WTIesExportSim" Val="0"/>
<Option Name="WTVcsExportSim" Val="127"/>
<Option Name="WTRivieraExportSim" Val="127"/>
<Option Name="WTActivehdlExportSim" Val="127"/>
<Option Name="WTVcsExportSim" Val="128"/>
<Option Name="WTRivieraExportSim" Val="128"/>
<Option Name="WTActivehdlExportSim" Val="128"/>
<Option Name="GenerateIPUpgradeLog" Val="TRUE"/>
<Option Name="XSimRadix" Val="hex"/>
<Option Name="XSimTimeUnit" Val="ns"/>
Binary file not shown.
@@ -32,7 +32,7 @@ struct lmk04828_init_param lmk04828_default_init_param = {
.spi_init = &lmk04828_spi_init
};
const uint32_t lmk04828_default_config_len = 137;
const uint32_t lmk04828_default_config_len = 136;
const struct lmk04828_config lmk04828_default_config[] = {
// 200MHz
{0x0000, 0x90}, // [7] reset; [4] 3-wire mode disabled
@@ -99,8 +99,6 @@ int32_t Hardware_RFdcInit(XRFdc *InstancePtr, u16 DeviceId)
RFdc_ConfigPtr = XRFdc_LookupConfig(DeviceId);
Status = XRFdc_CfgInitialize(InstancePtr, RFdc_ConfigPtr);
mdelay(100);
if (Status != SUCCESS)
{
DBG_ERROR("Hardware_RFdcInit() error: %" PRId32 "\n", Status);
@@ -213,6 +211,8 @@ int32_t Hardware_LMK04828Init(struct lmk04828_dev *device,
DBG_INFO("HDWR: [LMK04828] PLL2 NOT lock!\r\n");
}
mdelay(500);
return Status;
}
@@ -842,9 +842,8 @@ int32_t Hardware_Init(void)
// gpio initialization
Status = Hardware_GpioInit(&Gpio, AD9361_GPIO_DEVICE_ID);
#ifdef RFSOC
// rf data converter initialization
Status |= Hardware_RFdcInit(&RFdc, RFDC_DEVICE_ID);
#ifdef LMK04828
Status |= Hardware_LMK04828Init(lmk04828_inst, &lmk04828_default_init_param);
#endif
#ifdef HMC7044
@@ -855,10 +854,6 @@ int32_t Hardware_Init(void)
Status |= Hardware_AD9528Init(ad9528_inst, &ad9528_default_init_param);
#endif
#ifdef LMK04828
Status |= Hardware_LMK04828Init(lmk04828_inst, &lmk04828_default_init_param);
#endif
#ifdef LMX2594_ADC
Status |= Hardware_LMK2594Init(lmx2594_adc_inst, &lmx2594_adc_init_param);
#endif
@@ -897,36 +892,7 @@ int32_t Hardware_Init(void)
* 7 (VOUT_30) 231 (XRFDC_TILE_ID3) DAC 0/DUC 0 (XRFDC_BLK_ID0)
* 8 (VOUT_32) 231 (XRFDC_TILE_ID3) DAC 1/DUC 2 (XRFDC_BLK_ID2)
*
*/
// get & set mixer settings
XRFdc_Mixer_Settings Mixer_Settings_DAC;
// 3rd channel
Status = XRFdc_GetMixerSettings(&RFdc, XRFDC_DAC_TILE, XRFDC_TILE_ID1,
XRFDC_BLK_ID0, &Mixer_Settings_DAC);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
Mixer_Settings_DAC.Freq = 500;
Status = XRFdc_SetMixerSettings(&RFdc, XRFDC_DAC_TILE, XRFDC_TILE_ID1,
XRFDC_BLK_ID0, &Mixer_Settings_DAC);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
mdelay(100);
Status = XRFdc_UpdateEvent(&RFdc, XRFDC_DAC_TILE, XRFDC_TILE_ID1,
XRFDC_BLK_ID0, XRFDC_EVENT_MIXER);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/*
* ADC Mapping:
* ADC Mapping:
* Number Tile Block
* 1 (VIN0_01) 224 (XRFDC_TILE_ID0) ADC 0 (XRFDC_BLK_ID0)
* 2 (VIN0_12) 224 (XRFDC_TILE_ID0) ADC 1 (XRFDC_BLK_ID1)
@@ -936,8 +902,43 @@ int32_t Hardware_Init(void)
* 6 (VIN2_23) 226 (XRFDC_TILE_ID2) ADC 1 (XRFDC_BLK_ID1)
* 7 (VIN3_01) 227 (XRFDC_TILE_ID3) ADC 0 (XRFDC_BLK_ID0)
* 8 (VIN3_23) 227 (XRFDC_TILE_ID3) ADC 1 (XRFDC_BLK_ID1)
*
*/
*
*/
// rf data converter initialization
Status |= Hardware_RFdcInit(&RFdc, RFDC_DEVICE_ID);
// start up all tiles
for (u32 Tile_Id = XRFDC_TILE_ID0; Tile_Id < XRFDC_TILE_ID4; Tile_Id++)
{
XRFdc_StartUp(&RFdc, XRFDC_ADC_TILE, Tile_Id);
XRFdc_StartUp(&RFdc, XRFDC_DAC_TILE, Tile_Id);
}
// get & set mixer settings
XRFdc_Mixer_Settings Mixer_Settings_DAC;
// 7th channel
Status = XRFdc_GetMixerSettings(&RFdc, XRFDC_DAC_TILE, XRFDC_TILE_ID3,
XRFDC_BLK_ID0, &Mixer_Settings_DAC);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
Mixer_Settings_DAC.Freq = 501;
Status = XRFdc_SetMixerSettings(&RFdc, XRFDC_DAC_TILE, XRFDC_TILE_ID3,
XRFDC_BLK_ID0, &Mixer_Settings_DAC);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
mdelay(100);
Status = XRFdc_UpdateEvent(&RFdc, XRFDC_DAC_TILE, XRFDC_TILE_ID3,
XRFDC_BLK_ID0, XRFDC_EVENT_MIXER);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
// get & set mixer settings
XRFdc_Mixer_Settings Mixer_Settings_ADC;
@@ -949,7 +950,7 @@ int32_t Hardware_Init(void)
return XST_FAILURE;
}
Mixer_Settings_ADC.Freq = 500;
Mixer_Settings_ADC.Freq = 501;
Mixer_Settings_ADC.EventSource = XRFDC_EVNT_SRC_TILE;
Status = XRFdc_SetMixerSettings(&RFdc, XRFDC_ADC_TILE, XRFDC_TILE_ID3,