working processing and transferring data to PC via TX_buff. TX_buff is still limited in size because it is located in a small L1, not in SDRAM
This commit is contained in:
@ -21,11 +21,50 @@
|
||||
#include "l502_stream.h"
|
||||
|
||||
|
||||
|
||||
uint32_t streams_cnt[4] = {0,};
|
||||
uint32_t sport_rx_copy[1024] = {0,};
|
||||
|
||||
|
||||
|
||||
#define LFSM_val_ON 0b01100111
|
||||
#define LFSM_val_OFF 0b01101000
|
||||
#define LFSM_val_X 0b01101001
|
||||
|
||||
//#define TX_BUFF_SIZE 1024*1024
|
||||
#define TX_BUFF_SIZE 100
|
||||
#define LFSM_DATALEN 1024
|
||||
|
||||
#define dbg_sport_rx_copy_size 10
|
||||
//#define LFSM_DATALEN 1024
|
||||
|
||||
|
||||
|
||||
//#pragma section("sdram_noinit", NO_INIT)
|
||||
//#include "l502_sdram_noinit.h"
|
||||
//__attribute__((section(".sdram_noinit"), far))
|
||||
//static volatile uint32_t dbg_sport_rx_copy[TX_BUFF_SIZE];
|
||||
//uint32_t dbg_sport_rx_copy[TX_BUFF_SIZE];// = {0,};
|
||||
uint32_t dbg_sport_rx_copy[dbg_sport_rx_copy_size];// = {0,};
|
||||
//*
|
||||
|
||||
//#include "l502_sdram_noinit.h"
|
||||
//static volatile uint32_t LFSM_data[LFSM_DATALEN] = {0,};
|
||||
|
||||
#include "l502_sdram_noinit.h"
|
||||
volatile uint32_t TX_buff[TX_BUFF_SIZE];// __attribute__((section(".sdram_noinit")));
|
||||
// = {0,};
|
||||
|
||||
uint32_t streams_succes_flag = 0;
|
||||
|
||||
/*
|
||||
struct dataprocess_typedef {
|
||||
uint8_t config = 0;
|
||||
uint32_t datapoints_max_N = 0;
|
||||
uint32_t datapoint_curr_I = 0;
|
||||
uint32_t data_raw;
|
||||
};
|
||||
*/
|
||||
|
||||
//int f_sport_test(void);
|
||||
void l502_stream_init(void);
|
||||
|
||||
@ -57,15 +96,83 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
|
||||
/* если есть свободные дескрипторы на передачу по HDMA - ставим блок на
|
||||
передачу. Иначе возвращаем 0, чтобы на обработку этих данных функцию
|
||||
вызвали бы позже */
|
||||
++streams_cnt[0];
|
||||
/*
|
||||
for (int i = 0; i < TX_BUFF_SIZE; ++i){
|
||||
TX_buff[i] = 0x00000000;
|
||||
}
|
||||
*/
|
||||
|
||||
//for (int i = 0; i < dbg_sport_rx_copy; ++i){
|
||||
// dbg_sport_rx_copy[i] = data[i];
|
||||
//}
|
||||
|
||||
//*
|
||||
uint32_t radar_word_I = 0;
|
||||
|
||||
uint32_t TX_buff_I = 0;
|
||||
|
||||
for (int data_I = 0; (data_I < size) && (TX_buff_I < TX_BUFF_SIZE); ++data_I){
|
||||
uint32_t word = data[data_I];
|
||||
uint32_t val = word & 0x00FFFFFF;
|
||||
uint8_t header = (uint8_t)(word >> 24);
|
||||
//11010000
|
||||
if (((header & 0b10000000) == 0b10000000)){ //it`s ADC word
|
||||
if (header == 0XD0){ //phy channel № 1 in common mode
|
||||
//TX_buff[TX_buff_I++] = ((0b01100000 & LFSM_val_ON) << 24) & val;
|
||||
TX_buff[TX_buff_I++] = 0xD0ADEFEA;
|
||||
|
||||
}else if (header == 0xD1){//phy channel № 2 in common mode
|
||||
//TX_buff[TX_buff_I++] = ((0b01100000 & LFSM_val_OFF) << 24) & val;
|
||||
TX_buff[TX_buff_I++] = 0xD0ADEFEB;
|
||||
}else{
|
||||
//TX_buff[TX_buff_I++] = word;
|
||||
//TX_buff[TX_buff_I++] = 0xD0AAAAAA;
|
||||
}
|
||||
|
||||
|
||||
} else if ( header == 0b00000000){ //it`s digital
|
||||
if (word & (0b11 << 16)){
|
||||
TX_buff[TX_buff_I++] = 0b01101010 << 24;
|
||||
}
|
||||
} else{
|
||||
TX_buff[TX_buff_I++] = word;
|
||||
}
|
||||
|
||||
// }else if ((header & 0b00000000) == ){
|
||||
// }else if ((header & 0b00000000) == ){
|
||||
// }else if ((header & 0b00000000) == ){
|
||||
// }else if ((header & 0b00000000) == ){
|
||||
// }else if ((header & 0b00000000) == ){
|
||||
|
||||
for (int i = 0; i < 1024; ++i){
|
||||
sport_rx_copy[i] = data[i];
|
||||
}
|
||||
|
||||
//stream_in_buf_free(size);
|
||||
|
||||
/*
|
||||
|
||||
//int i = 0;
|
||||
//uint8_t
|
||||
//while
|
||||
|
||||
for (int i = 0; i < LFSM_DATALEN; ++i){
|
||||
uint32_t msg;
|
||||
if (i % 2){
|
||||
msg = (LFSM_val_ON << 24) + data[i];
|
||||
}else{
|
||||
msg = (LFSM_val_OFF << 24) + data[i];
|
||||
}
|
||||
LFSM_data[i] = msg;
|
||||
}
|
||||
|
||||
*/
|
||||
if (hdma_send_req_rdy()) {
|
||||
|
||||
streams_cnt[0] = hdma_send_req_start(data, size, 0);
|
||||
//streams_cnt[0]
|
||||
hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0);
|
||||
//hdma_send_req_start(data, size, 0);
|
||||
//hdma_send_req_start(data, size, 0);
|
||||
//streams_cnt[0] = hdma_send_req_start(LFSM_data, LFSM_DATALEN, 0);
|
||||
return size;
|
||||
}
|
||||
return 0;
|
||||
@ -219,7 +326,7 @@ void usr_cmd_process(t_l502_bf_cmd *cmd) {
|
||||
uint32_t err_codes[15] = {0,};
|
||||
err_codes[0] = params_set_lch_cnt(1);
|
||||
//err_codes[1] = params_set_lch(1, 1, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, chan 1, mode L502_LCH_MODE_COMM (=1),range L502_ADC_RANGE_5 (=1), avg, flags
|
||||
err_codes[1] = params_set_lch(1, 1, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, chan 1, mode L502_LCH_MODE_COMM (=1),range L502_ADC_RANGE_5 (=1), avg, flags
|
||||
err_codes[1] = params_set_lch(0, 0, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, chan 1, mode L502_LCH_MODE_COMM (=1),range L502_ADC_RANGE_5 (=1), avg, flags
|
||||
err_codes[2] = params_set_adc_freq_div(1);
|
||||
err_codes[3] = params_set_ref_freq(2000000);
|
||||
err_codes[4] = params_set_adc_interframe_delay(0);
|
||||
@ -261,19 +368,22 @@ void usr_cmd_process(t_l502_bf_cmd *cmd) {
|
||||
l502_cmd_done(streams_sum, streams_cnt, 4);
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x8006:{ //get data from SPORT_RX copied arr
|
||||
uint32_t sport_rx_nonzero_sum = 0;
|
||||
for (int i = 0; i < 1024; ++i){
|
||||
if (sport_rx_copy[i]){
|
||||
|
||||
for (int i = 0; i < dbg_sport_rx_copy_size; ++i){
|
||||
if (dbg_sport_rx_copy[i]){
|
||||
++sport_rx_nonzero_sum;
|
||||
}
|
||||
}
|
||||
l502_cmd_done(sport_rx_nonzero_sum, sport_rx_copy, 1024);
|
||||
l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case 0x8007:{ //get data from SPORT_RX copied arr
|
||||
|
||||
case 0x8007:{ //start data processing
|
||||
l502_cmd_done(cmd-> param, NULL, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user