succesfully loading firmware to BF and executing command L502_BF_CMD_CODE_GET_PARAM (aka f_cmd_get_param), with parameter and receiving data. This BF function was modified to reply hardcoded 44527 at param 87. Other params are working too

This commit is contained in:
2025-06-27 17:53:50 +03:00
parent 84e847ea14
commit c1f3d3262b
3 changed files with 84 additions and 3 deletions

Binary file not shown.

85
main.c
View File

@ -84,6 +84,9 @@
#define READ_TIMEOUT 2000 #define READ_TIMEOUT 2000
#define BF_CMD_USER_MULT 0x8001U
// номера используемых физических каналов // // номера используемых физических каналов //
static uint32_t f_channels[ADC_LCH_CNT] = {0}; static uint32_t f_channels[ADC_LCH_CNT] = {0};
// режимы измерения для каналов // // режимы измерения для каналов //
@ -297,14 +300,21 @@ int32_t f_setup_params(t_x502_hnd hnd) {
// } // }
X502_SetSyncMode(hnd, X502_SYNC_DI_SYN1_FALL);
//set ADC sample frequency from internal generator with frequency 2 MHz //set ADC sample frequency from internal generator with frequency 2 MHz
//X502_SetRefFreq(hnd, X502_REF_FREQ_2000KHZ); //X502_SetRefFreq(hnd, X502_REF_FREQ_2000KHZ);
//=======================================================//
//for real work with Radar
//X502_SetSyncMode(hnd, X502_SYNC_DI_SYN1_FALL);
//X502_SetSyncStartMode(hnd, X502_SYNC_DI_SYN2_RISE); //start ADC samping by external trigger
X502_SetSyncStartMode(hnd, X502_SYNC_DI_SYN2_RISE); //start ADC samping by external trigger
//=======================================================//
//for debug purposes:
X502_SetSyncMode(hnd, X502_SYNC_INTERNAL);
X502_SetSyncStartMode(hnd, X502_SYNC_INTERNAL); //start ADC samping after executing X502_StreamsStart()
@ -383,7 +393,75 @@ int main(int argc, char** argv) {
fprintf(stderr, "Ошибка настройки модуля: %s!", X502_GetErrorString(err)); fprintf(stderr, "Ошибка настройки модуля: %s!", X502_GetErrorString(err));
} }
char* BF_firmware_filename = "l502-BFfirmware0.ldr";
printf("loading Blackfin firmware file: %s\n", BF_firmware_filename);
uint32_t bf_firmware_load_state = X502_BfLoadFirmware(hnd, BF_firmware_filename); //load firmware from l502-BFfirmware0.ldr file to BlackFin
printf("load state: %u \n", bf_firmware_load_state);
uint32_t BF_cmd_receive_code = 0;
uint16_t cmd_code = 3;
uint32_t par = 87;
const uint32_t snd_data[] = {1,1,2,2,3,4,5,56,67,23,1};
uint32_t snd_size = 11;
uint32_t rcv_data[13] = {0,};
uint32_t rcv_size = 13;
uint32_t tout = 1;
uint32_t recvd_size = 0;
/*
uint16_t cmd_code = BF_CMD_USER_MULT;
uint32_t par = 10;
const uint32_t snd_data[] = {1,1,2,2,3,4,5,56,67,23,1};
uint32_t snd_size = 11;
uint32_t rcv_data[13] = {0,};
uint32_t rcv_size = 13;
uint32_t tout = 1;
uint32_t recvd_size = 0;
*/
printf("TX cmd_code: %u\n", cmd_code);
printf("TX tout: %u\n", tout);
printf("TX par: %u\n", par);
printf("TX snd_data size: %u\n", snd_size);
for (int i = 0; i < snd_size; ++i){
printf(" %u,", snd_data[i]);
}
printf("\n");
printf("TX rcv_size: %u\n", rcv_size);
BF_cmd_receive_code = X502_BfExecCmd (hnd,
cmd_code,
par,
snd_data,
snd_size,
rcv_data,
rcv_size,
tout,
&recvd_size);
printf("\n======================\n\n");
printf("RX received code: %u\n", BF_cmd_receive_code);
printf("RX recvd_size: %u\n", recvd_size);
printf("RX received_data:\n" );
for (int i = 0; i < recvd_size; ++i){
printf(" %u,", rcv_data[i]);
}
printf("\n");
X502_Close(hnd);
// освобождаем описатель
X502_Free(hnd);
return 0;
@ -395,12 +473,13 @@ int main(int argc, char** argv) {
// } // }
f_out = 2; f_out = 1;
struct timespec time_started; struct timespec time_started;
struct timespec time_ended; struct timespec time_ended;
timespec_get(&time_started, TIME_UTC); timespec_get(&time_started, TIME_UTC);
float total_runs = 0.0; float total_runs = 0.0;
long double delta_time = 0.0; long double delta_time = 0.0;
while(f_out != 1){ while(f_out != 1){
total_runs += 1.0; total_runs += 1.0;

View File

@ -46,3 +46,5 @@ endif
all: all:
$(CC) main.c $(FLAGS) -ll502api -le502api -lx502api -o BF_companion $(CC) main.c $(FLAGS) -ll502api -le502api -lx502api -o BF_companion
clean:
-rm BF_companion