一、項目名稱:
汽車智能輔助數(shù)據(jù)采集探測系統(tǒng)
二、項目背景:
三、功能簡述:
四、硬件介紹:
五、方案設(shè)計:


六、程序部分代碼:
1、 關(guān)于BMI160傳感器程序部分代碼:
Bsp_Spi_Init();
Bsp_Bmi160_Init();
App_Bmi160_Init();
int8_t fifo_gyro_header_time_data(struct bmi160_dev *dev)
{
int8_t rslt = 0;
//uint16_t index = 0;
struct bmi160_sensor_data accel_data[12]; // 300 bytes / ~7bytes per frame ~ 42 data frames
uint8_t accel_frames_req = 12;
uint8_t accel_index;
/* Declare instances of the sensor data structure to store the parsed FIFO data */
struct bmi160_sensor_data gyro_data[12]; // 300 bytes / ~7bytes per frame ~ 42 data frames
uint8_t gyro_frames_req = 12;
uint8_t gyro_index;
/* Read data from the sensor's FIFO and store it the FIFO buffer,"fifo_buff" */
printf("n USER REQUESTED FIFO LENGTH : %dn",dev->fifo->length);
rslt = bmi160_get_fifo_data(dev);
if (rslt == BMI160_OK) {
printf("n AVAILABLE FIFO LENGTH : %dn",dev->fifo->length);
/* Print the raw FIFO data */
/*for (index = 0; index < dev->fifo->length; index++) {
printf("n FIFO DATA INDEX[%d] = 0x%02x", index,
dev->fifo->data[index]);
}
*/
/* ##################################GYRO DATA######################################### */
/* Parse the FIFO data to extract gyro data from the FIFO buffer */
printf("n REQUESTED GYRO DATA FRAMES : %dn ",gyro_frames_req);
rslt = bmi160_extract_gyro(gyro_data, &gyro_frames_req, dev);
if (rslt == BMI160_OK) {
printf("n AVAILABLE GYRO DATA FRAMES : %dn ",gyro_frames_req);
/* Print the parsed gyro data from the FIFO buffer */
for (gyro_index = 0; gyro_index < gyro_frames_req; gyro_index++) {
printf("nFIFO GYRO FRAME[%d]",gyro_index);
printf("nGYRO X: %.2f°/st Y: %.2f°/st Z: %.2f°/s"
,GYRO_SWITCH_UNIT(gyro_data[gyro_index].x),GYRO_SWITCH_UNIT(gyro_data[gyro_index].y)
,GYRO_SWITCH_UNIT(gyro_data[gyro_index].z));
}
} else {
printf("n Gyro data extraction failed");
}
/* ##################################ACCEL DATA######################################### */
printf("n REQUESTED ACCEL DATA FRAMES : %dn ",accel_frames_req);
rslt = bmi160_extract_accel(accel_data, &accel_frames_req, dev);
if (rslt == BMI160_OK) {
printf("n AVAILABLE ACCEL DATA FRAMES : %dn ",accel_frames_req);
/* Print the parsed accel data from the FIFO buffer */
for (accel_index = 0; accel_index < accel_frames_req; accel_index++) {
printf("nFIFO ACCEL FRAME[%d]",accel_index);
printf("nACCEL X: %.2fg/s t Y: %.2fg/s t Z: %.2fg/s"
,ACCEL_SWITCH_UNIT(accel_data[accel_index].x), ACCEL_SWITCH_UNIT(accel_data[accel_index].y)
,ACCEL_SWITCH_UNIT(accel_data[accel_index].z));
}
} else {
printf("n Accel data extraction failed");
}
} else {
printf("n Reading FIFO data failed");
}
return rslt;
}
2、雷達(dá)部分的程序代碼:
if(Radar_Flag)
{
Radar_Flag = 0;
memcpy(Radar_buf, USART2_RX_BUF, 50);
memset(USART2_RX_BUF, 0, 50);
for(i = 0; i < 50; i++)
{
if(memcmp(Radar_Distance, &Radar_buf[i], 4) == 0)
{
for(j = 0; j < 5; j ++)
{
if(0x0d == Radar_buf[i + 4 + j])
{
switch(j)
{
case 1:
Radar = (Radar_buf[i + 4] - 0x30);
break;
case 2:
Radar = (Radar_buf[i + 4] - 0x30) * 10 + (Radar_buf[i + 5] - 0x30);
break;
case 3:
Radar = (Radar_buf[i + 4] - 0x30) * 100 + (Radar_buf[i + 5] - 0x30) * 10 + (Radar_buf[i + 6] - 0x30);
break;
case 4:
Radar = (Radar_buf[i + 4] - 0x30) * 1000 + (Radar_buf[i + 5] - 0x30) * 100 + (Radar_buf[i + 6] - 0x30) * 10 + (Radar_buf[i + 7] - 0x30);
break;
case 5:
Radar = (Radar_buf[i + 4] - 0x30) * 10000 + (Radar_buf[i + 5] - 0x30) * 1000 + (Radar_buf[i + 6] - 0x30) * 100 + (Radar_buf[i + 8] - 0x30) * 10 + (Radar_buf[i + 9] - 0x30);
break;
}
}
}
if (Radar > 1000) //有人
{
}
else
{
}
}
}
}
七、成品照片:



