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:
BIN
BF_companion
BIN
BF_companion
Binary file not shown.
85
main.c
85
main.c
@ -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,13 +300,20 @@ 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,6 +393,74 @@ 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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user