新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2019-7-17
- 在线时间
- 11 小时
|
16金钱
通过time8出发AD进行周期采样,并通过dma存储到外部1M的SRAM。目前遇到问题,正常给用变量循环给SRAM赋值操作没有问题,通过HAL库函数HAL_ADC_Start_DMA(&hadc1, (uint32_t *)&ADC_Buff, 80000);当写入50000个字节是正常的,写入80000个字节时发现SRAM内只写入了14000多个字节。
uint8_t ADC_Buff[1000000] __attribute__((at(0X68000000)));//测试用数组
int main(void)
{
/* USER CODE BEGIN 1 */
uint32_t ts=0;
uint16_t a=0;
uint8_t temp=0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_FSMC_Init();
MX_ADC1_Init();
MX_TIM8_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
for(ts=0;ts<80000;ts++)ADC_Buff[ts]=111;//预存测试数据
HAL_TIM_Base_Start(&htim8);
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)&ADC_Buff, 80000);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
//printf("step1 \n");
HAL_Delay(10000);
printf("start \n");
//HAL_Delay(10000);
HAL_ADC_Stop_DMA(&hadc1);
//printf("start \n");
//HAL_Delay(10000);
//a=hdma_adc1.Instance->NDTR;
//printf("a=%d \n",a);
for(ts=0;ts<80000;ts++)
{
//FSMC_SRAM_ReadBuffer(&temp,ts,1);
//printf("adc0=%d \n",temp);
//HAL_Delay(1);
printf("adc1=%d \n",ADC_Buff[ts]);
//HAL_Delay(10);
//printf("temp=%d \n",temp);
//HAL_Delay(10);
printf("ts=%d \n",ts);
//HAL_Delay(1);
//a=hdma_adc1.Instance->NDTR;
//printf("a=%d \n",a);
}
printf("stop \n");
while (1);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
|
|