|
楼主 |
发表于 2020-10-30 13:05:08
|
显示全部楼层
直接焊接在板子上的,以为是两个有影响,把没问题的那个去掉了,单独调这个有问题的!但是另一个去掉,这个还是有问题!读出的数据还是错着位,没规律!
void AD7616_FSMC_Config(void)
{
FMC_NORSRAMInitTypeDef init;
FMC_NORSRAMTimingInitTypeDef p;
/* 使能FSMC时钟 */
RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC, ENABLE);
// 1 / 180M = 0.00556us = 5.56ns
/*
AD7616规格书要求(3.3V时):RD读信号低电平脉冲宽度最短30ns,高电平脉冲最短宽度10ns。
*/
p.FMC_AddressSetupTime = 3; //低 或者8
p.FMC_AddressHoldTime = 0;
p.FMC_DataSetupTime = 7; //高 或者4
p.FMC_BusTurnAroundDuration = 0;
p.FMC_CLKDivision = 0;
p.FMC_DataLatency = 0;
p.FMC_AccessMode = FMC_AccessMode_A;
init.FMC_Bank = FMC_Bank1_NORSRAM1;
init.FMC_DataAddressMux = FMC_DataAddressMux_Disable;
init.FMC_MemoryType = FMC_MemoryType_SRAM;
init.FMC_MemoryDataWidth = FMC_NORSRAM_MemoryDataWidth_16b;
init.FMC_BurstAccessMode = FMC_BurstAccessMode_Disable;
init.FMC_AsynchronousWait = FMC_AsynchronousWait_Disable;
init.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low;
init.FMC_WrapMode = FMC_WrapMode_Disable;
init.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState;
init.FMC_WriteOperation = FMC_WriteOperation_Enable;
init.FMC_WaitSignal = FMC_WaitSignal_Disable;
init.FMC_ExtendedMode = FMC_ExtendedMode_Enable;
init.FMC_WriteBurst = FMC_WriteBurst_Disable;
init.FMC_ReadWriteTimingStruct = &p;
init.FMC_WriteTimingStruct = &p;
init.FMC_ContinousClock = FMC_CClock_SyncOnly;
FMC_NORSRAMInit(&init);
/* - BANK 1 (of NOR/SRAM Bank 1~4) is enabled */
FMC_NORSRAMCmd(FMC_Bank1_NORSRAM1, ENABLE);
// FMC_NORSRAMCmd(FMC_Bank1_NORSRAM2, ENABLE);
}
void AD7616_DMA_MODE1_Config(uint16_t count)
{
DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(DMA2_Stream2);
DMA_InitStructure.DMA_Channel = DMA_Channel_0;
DMA_InitStructure.DMA_PeripheralBaseAddr = NET_BASE_ADDR_ONE;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC_7616_collect.AD7616_1_DATA[count];
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 16;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_INC16;
DMA_Init(DMA2_Stream2,&DMA_InitStructure);
DMA_ITConfig(DMA2_Stream2,DMA_IT_TC,ENABLE); //使能DMA传输完成中断
DMA_ITConfig(DMA2_Stream2,DMA_IT_TE,ENABLE);
DMA_Cmd(DMA2_Stream2,ENABLE);
}
|
-
|