From d522dec4ec3f1d265f3d641538522c2a2697e811 Mon Sep 17 00:00:00 2001 From: Disha D Date: Fri, 20 Sep 2024 16:14:45 +0530 Subject: [PATCH] projects:ad719x_iio:Adding STM32 Support 1. Added STM32 Platform Support to AD719x family. 2. Updated documentation to include stm32 support Signed-off-by: Disha D --- .../ad719x_iio/ad719x_hardware_connection.png | Bin 65591 -> 63644 bytes .../source/projects/ad719x_iio/ad719x_iio.rst | 9 +- projects/ad719x_iio/.mbedignore | 4 + projects/ad719x_iio/README.txt | 39 --- projects/ad719x_iio/STM32/.extSettings | 26 ++ projects/ad719x_iio/STM32/ad719x_iio.ioc | 270 ++++++++++++++++++ projects/ad719x_iio/app/ad719x_iio.c | 34 +++ projects/ad719x_iio/app/ad719x_user_config.c | 10 +- projects/ad719x_iio/app/app_config.c | 14 +- projects/ad719x_iio/app/app_config.h | 16 ++ projects/ad719x_iio/app/app_config_mbed.h | 9 +- projects/ad719x_iio/app/app_config_stm32.c | 71 +++++ projects/ad719x_iio/app/app_config_stm32.h | 75 +++++ .../ad719x_iio/app/stm32_gpio_irq_generated.c | 82 ++++++ projects/ad719x_iio/src.mk | 8 + 15 files changed, 620 insertions(+), 47 deletions(-) create mode 100644 projects/ad719x_iio/.mbedignore delete mode 100644 projects/ad719x_iio/README.txt create mode 100644 projects/ad719x_iio/STM32/.extSettings create mode 100644 projects/ad719x_iio/STM32/ad719x_iio.ioc create mode 100644 projects/ad719x_iio/app/app_config_stm32.c create mode 100644 projects/ad719x_iio/app/app_config_stm32.h create mode 100644 projects/ad719x_iio/app/stm32_gpio_irq_generated.c diff --git a/doc/sphinx/source/projects/ad719x_iio/ad719x_hardware_connection.png b/doc/sphinx/source/projects/ad719x_iio/ad719x_hardware_connection.png index 30abfc453548ade1f15df5bcaecb55c9486ef1e0..51eeaf2c318d52beefcceb6594ac9db3a37f0c0d 100644 GIT binary patch literal 63644 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%0DfE`qv^?Y8Unv_ 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 literal 65591 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

jyq>(PAO6>WbXhyQWv>1d@jxXvW(VqiC~ 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 aPKj3Ym?$ewUQyt{m$HI}e37h$-~Ry@!g4kM diff --git a/doc/sphinx/source/projects/ad719x_iio/ad719x_iio.rst b/doc/sphinx/source/projects/ad719x_iio/ad719x_iio.rst index ca50a864..5c78338a 100644 --- a/doc/sphinx/source/projects/ad719x_iio/ad719x_iio.rst +++ b/doc/sphinx/source/projects/ad719x_iio/ad719x_iio.rst @@ -32,6 +32,11 @@ This page gives an overview of using the ARM platforms supported (default is Mbe firmware example with Analog Devices AD719x Evaluation board and SDP-K1 controller board. This example code leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate the AD719x device by providing a device debug and data capture support. +The code provides support to MBED and STM32 platforms. + +The respective build guides for each of the platforms +can be found in the further sections. The active platform can be chosen by selecting the appropriate +value for the ACTIVE_PLATFORM macro in the app_config.h (Default is mbed) .. image:: /source/tinyiiod/app_interface.png :width: 350 @@ -52,11 +57,11 @@ to communicates with IIO device. Hardware Connections ==================== -Required: SDP-K1 (or alternative Mbed enabled controller board), EVAL-AD719x board +Required: SDP-K1 (or alternative Mbed enabled controller board, or an STM32 board), EVAL-AD719x board and USB cable. Connect the EVAL-AD719x board to SDP-K1 board (or any other Mbed enabled controller -board) using jumper wires. Connect SDP-K1 board to the PC using the USB cable. +board or an equivalent STM32 board) using jumper wires. Connect SDP-K1 board to the PC using the USB cable. .. image:: /source/projects/ad719x_iio/ad719x_hardware_connection.png diff --git a/projects/ad719x_iio/.mbedignore b/projects/ad719x_iio/.mbedignore new file mode 100644 index 00000000..1090526a --- /dev/null +++ b/projects/ad719x_iio/.mbedignore @@ -0,0 +1,4 @@ +STM32/ +app/app_config_stm32.h +app/app_config_stm32.c +app/stm32_gpio_irq_generated.c \ No newline at end of file diff --git a/projects/ad719x_iio/README.txt b/projects/ad719x_iio/README.txt deleted file mode 100644 index 07ce847f..00000000 --- a/projects/ad719x_iio/README.txt +++ /dev/null @@ -1,39 +0,0 @@ -Evaluation Boards/Products Supported ------------------------------------- --Products supported: AD7190, AD7192, AD7193, AD7194, AD7195 - -Overview --------- -This is a IIO based firmware application to evalute the AD719x device. -This code was developed and tested on SDP-K1 controller board: https://os.mbed.com/platforms/SDP_K1/. -Use of Mbed platform allows code to port on other Mbed supported target boards with little or no modifications. - -Product details: https://www.analog.com/en/products/ad7193.html -User Guide for this code: https://wiki.analog.com/resources/tools-software/product-support-software/ad719x_mbed_iio_application -Communication Protocol: SPI - - -Hardware Setup --------------- -Required: SDP-K1 (or alternative Mbed enabled controller board), EVAL-AD719x board and USB cable. -Plug in the EVAL-AD719x board on SDP-K1 board (or any other Mbed enabled controller board) -using the SDP-120 or Arduino or PMOD on-board connector (refer software wiki page to identify suitable interface). -Connect SDP-K1 board to the PC using the USB cable. - - -How to Get Started ------------------- -Mbed web/online compiler: https://studio.keil.arm.com/auth/login/ -Import code into compiler and compile it to generate executable binary file. -Drag and drop binary file into USB drive hosted by SDP-K1 controller board. -Find detailed instructions here: https://wiki.analog.com/resources/tools-software/product-support-software/pcg-fw-mbed-build-guide - - -Notes ------ -A detailed user guide on SDP-K1 controller board is available here: -https://os.mbed.com/platforms/SDP_K1/ -https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/SDP-K1.html. - -Copyright (c) 2023 Analog Devices, Inc. All rights reserved. - diff --git a/projects/ad719x_iio/STM32/.extSettings b/projects/ad719x_iio/STM32/.extSettings new file mode 100644 index 00000000..6d599848 --- /dev/null +++ b/projects/ad719x_iio/STM32/.extSettings @@ -0,0 +1,26 @@ +[ProjectFiles] +HeaderPath=../app;../../../libraries/no-OS/util;../../../libraries/no-OS/include;../../../libraries/no-OS/drivers/platform/stm32;../../../libraries/no-OS/iio;../../../libraries/no-OS/drivers/api;../../../libraries/precision-converters-library/board_info/;../../../libraries/precision-converters-library/common/;../../../libraries/no-OS/drivers/eeprom/24xx32a/;../../../libraries/no-OS/drivers/adc/ad719x/;../../../libraries/precision-converters-library/sdp_k1_sdram/; + +[Groups] +app/=../app/main.c;../app/main.c;../app/ad719x_iio.c;../app/ad719x_iio.h;../app/ad719x_support.c;../app/ad719x_support.h;../app/app_config.h;../app/app_config.c;../app/app_config_stm32.c;../app/app_config_stm32.h;../app/stm32_gpio_irq_generated.c;../app/ad719x_user_config.c;../app/ad719x_user_config.h; + +app/libraries/precision-converters-library/board_info/=../../../libraries/precision-converters-library/board_info/board_info.c;../../../libraries/precision-converters-library/board_info/board_info.h; + +app/libraries/precision-converters-library/common/=../../../libraries/precision-converters-library/common/common.h;../../../libraries/precision-converters-library/common/common.c; + +app/libraries/no-OS/=../../../libraries/no-OS/util/;../../../libraries/no-OS/include; + +app/libraries/precision-converters-library/sdp_k1_sdram/=../../../libraries/precision-converters-library/sdp_k1_sdram/sdp_k1_sdram.c;../../../libraries/precision-converters-library/sdp_k1_sdram/sdp_k1_sdram.h; + +app/libraries/no-OS/drivers/eeprom/24xx32a/=../../../libraries/no-OS/drivers/eeprom/24xx32a/24xx32a.c;../../../libraries/no-OS/drivers/eeprom/24xx32a/24xx32a.h; + +app/libraries/no-OS/drivers/adc/ad719x/=../../../libraries/no-OS/drivers/adc/ad719x/ad719x.c;../../../libraries/no-OS/drivers/adc/ad719x/ad719x.h; + +app/libraries/no-OS/drivers/platform/stm32/=../../../libraries/no-OS/drivers/platform/stm32/stm32_delay.c;../../../libraries/no-OS/drivers/platform/stm32/stm32_gpio.c;../../../libraries/no-OS/drivers/platform/stm32/stm32_gpio.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_gpio_irq.c;../../../libraries/no-OS/drivers/platform/stm32/stm32_gpio_irq.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_spi.c;../../../libraries/no-OS/drivers/platform/stm32/stm32_spi.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_i2c.c;../../../libraries/no-OS/drivers/platform/stm32/stm32_i2c.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_uart.c;../../../libraries/no-OS/drivers/platform/stm32/stm32_uart.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_delay.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_irq.h;../../../libraries/no-OS/drivers/platform/stm32/stm32_irq.c; + +app/libraries/no-OS/iio/=../../../libraries/no-OS/iio/iio.c;../../../libraries/no-OS/iio/iio.h;../../../libraries/no-OS/iio/iiod.h;../../../libraries/no-OS/iio/iiod.c;../../../libraries/no-OS/iio/iio_trigger.c;../../../libraries/no-OS/iio/iio_types.h;../../../libraries/no-OS/iio/iio_trigger.h; + +app/libraries/no-OS/drivers/api/=../../../libraries/no-OS/drivers/api/no_os_gpio.c;../../../libraries/no-OS/drivers/api/no_os_spi.c;../../../libraries/no-OS/drivers/api/no_os_irq.c;../../../libraries/no-OS/drivers/api/no_os_i2c.c;../../../libraries/no-OS/drivers/api/no_os_eeprom.c;../../../libraries/no-OS/drivers/api/no_os_uart.c;../../../libraries/no-OS/drivers/api/no_os_dma.c; + +[Others] +Define=_USE_STD_INT_TYPES;TINYIIOD_VERSION_MAJOR;TINYIIOD_VERSION_MINOR;TINYIIOD_VERSION_GIT;IIOD_BUFFER_SIZE;IIO_IGNORE_BUFF_OVERRUN_ERR;USE_PHY_COM_PORT;NO_OS_VERSION;USE_STANDARD_SPI;TARGET_SDP_K1 \ No newline at end of file diff --git a/projects/ad719x_iio/STM32/ad719x_iio.ioc b/projects/ad719x_iio/STM32/ad719x_iio.ioc new file mode 100644 index 00000000..f8b5910b --- /dev/null +++ b/projects/ad719x_iio/STM32/ad719x_iio.ioc @@ -0,0 +1,270 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +Mcu.CPN=STM32F469NIH6 +Mcu.Family=STM32F4 +Mcu.IP0=FMC +Mcu.IP1=I2C1 +Mcu.IP2=NVIC +Mcu.IP3=RCC +Mcu.IP4=SPI1 +Mcu.IP5=SYS +Mcu.IP6=UART5 +Mcu.IPNb=7 +Mcu.Name=STM32F469NIHx +Mcu.Package=TFBGA216 +Mcu.Pin0=PB8 +Mcu.Pin1=PB4 +Mcu.Pin10=PF0 +Mcu.Pin11=PG9 +Mcu.Pin12=PD2 +Mcu.Pin13=PF1 +Mcu.Pin14=PH0/OSC_IN +Mcu.Pin15=PF2 +Mcu.Pin16=PH1/OSC_OUT +Mcu.Pin17=PF3 +Mcu.Pin18=PG8 +Mcu.Pin19=PF4 +Mcu.Pin2=PB3 +Mcu.Pin20=PH5 +Mcu.Pin21=PH3 +Mcu.Pin22=PF5 +Mcu.Pin23=PH2 +Mcu.Pin24=PD15 +Mcu.Pin25=PD14 +Mcu.Pin26=PF12 +Mcu.Pin27=PF15 +Mcu.Pin28=PF13 +Mcu.Pin29=PG0 +Mcu.Pin3=PC12 +Mcu.Pin30=PE8 +Mcu.Pin31=PG5 +Mcu.Pin32=PG4 +Mcu.Pin33=PF14 +Mcu.Pin34=PF11 +Mcu.Pin35=PE9 +Mcu.Pin36=PA7 +Mcu.Pin37=PE7 +Mcu.Pin38=PE10 +Mcu.Pin39=VP_SYS_VS_Systick +Mcu.Pin4=PA15 +Mcu.Pin5=PB7 +Mcu.Pin6=PG15 +Mcu.Pin7=PG11 +Mcu.Pin8=PD0 +Mcu.Pin9=PD1 +Mcu.PinsNb=40 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F469NIHx +MxCube.Version=6.11.1 +MxDb.Version=DB.6.0.111 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.UART5_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA15.Locked=true +PA15.Signal=GPIO_Output +PA7.Locked=true +PA7.Mode=Full_Duplex_Master +PA7.Signal=SPI1_MOSI +PB3.Mode=Full_Duplex_Master +PB3.Signal=SPI1_SCK +PB4.Mode=Full_Duplex_Master +PB4.Signal=SPI1_MISO +PB7.Locked=true +PB7.Mode=I2C +PB7.Signal=I2C1_SDA +PB8.Mode=I2C +PB8.Signal=I2C1_SCL +PC12.Mode=Asynchronous +PC12.Signal=UART5_TX +PD0.Signal=FMC_D2_DA2 +PD1.Signal=FMC_D3_DA3 +PD14.Signal=FMC_D0_DA0 +PD15.Signal=FMC_D1_DA1 +PD2.Mode=Asynchronous +PD2.Signal=UART5_RX +PE10.Signal=FMC_D7_DA7 +PE7.Signal=FMC_D4_DA4 +PE8.Signal=FMC_D5_DA5 +PE9.Signal=FMC_D6_DA6 +PF0.Signal=FMC_A0 +PF1.Signal=FMC_A1 +PF11.Signal=FMC_SDNRAS +PF12.Signal=FMC_A6 +PF13.Signal=FMC_A7 +PF14.Signal=FMC_A8 +PF15.Signal=FMC_A9 +PF2.Signal=FMC_A2 +PF3.Signal=FMC_A3 +PF4.Signal=FMC_A4 +PF5.Signal=FMC_A5 +PG0.Signal=FMC_A10 +PG11.Locked=true +PG11.Signal=GPXTI11 +PG15.Signal=FMC_SDNCAS +PG4.Signal=FMC_A14_BA0 +PG5.Signal=FMC_A15_BA1 +PG8.Signal=FMC_SDCLK +PG9.Locked=true +PG9.Signal=GPIO_Output +PH0/OSC_IN.Mode=HSE-External-Oscillator +PH0/OSC_IN.Signal=RCC_OSC_IN +PH1/OSC_OUT.Mode=HSE-External-Oscillator +PH1/OSC_OUT.Signal=RCC_OSC_OUT +PH2.Mode=SdramChipSelect1_1 +PH2.Signal=FMC_SDCKE0 +PH3.Mode=SdramChipSelect1_1 +PH3.Signal=FMC_SDNE0 +PH5.Signal=FMC_SDNWE +PinOutPanel.CurrentBGAView=Top +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F469NIHx +ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=true +ProjectManager.PreviousToolchain=STM32CubeIDE +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=ad719x_iio.ioc +ProjectManager.ProjectName=ad719x_iio +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack=I2C,SPI,UART +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-false,3-MX_I2C1_Init-I2C1-false-HAL-false,4-MX_SPI1_Init-SPI1-false-HAL-false,5-MX_UART5_Init-UART5-false-HAL-false,false-6-MX_FMC_Init-FMC-false-HAL-false +RCC.AHBFreq_Value=50000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=25000000 +RCC.APB1TimFreq_Value=50000000 +RCC.APB2Freq_Value=50000000 +RCC.APB2TimFreq_Value=50000000 +RCC.CortexFreq_Value=50000000 +RCC.DSIFreq_Value=62500000 +RCC.DSITXEscFreq_Value=15625000 +RCC.EthernetFreq_Value=50000000 +RCC.FCLKCortexFreq_Value=50000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=50000000 +RCC.I2SFreq_Value=192000000 +RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DSIFreq_Value,DSITXEscFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,I2SFreq_Value,LCDTFTFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLDSIVCOFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLRCLKFreq_Value,PLLRFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PLLSAIRCLKFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SAIAFreq_Value,SAIBFreq_Value,SDIOFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USBFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value +RCC.LCDTFTFreq_Value=96000000 +RCC.MCO2PinFreq_Value=50000000 +RCC.PLLCLKFreq_Value=50000000 +RCC.PLLDSIVCOFreq_Value=1000000000 +RCC.PLLI2SQCLKFreq_Value=96000000 +RCC.PLLI2SRCLKFreq_Value=192000000 +RCC.PLLM=8 +RCC.PLLN=50 +RCC.PLLQCLKFreq_Value=25000000 +RCC.PLLRCLKFreq_Value=50000000 +RCC.PLLRFreq_Value=50000000 +RCC.PLLSAIPCLKFreq_Value=192000000 +RCC.PLLSAIQCLKFreq_Value=96000000 +RCC.PLLSAIRCLKFreq_Value=192000000 +RCC.RTCFreq_Value=32000 +RCC.RTCHSEDivFreq_Value=12500000 +RCC.SAIAFreq_Value=96000000 +RCC.SAIBFreq_Value=96000000 +RCC.SDIOFreq_Value=25000000 +RCC.SYSCLKFreq_VALUE=50000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.USBFreq_Value=25000000 +RCC.VCOI2SOutputFreq_Value=384000000 +RCC.VCOInputFreq_Value=2000000 +RCC.VCOOutputFreq_Value=100000000 +RCC.VCOSAIOutputFreq_Value=384000000 +SH.FMC_A0.0=FMC_A0,11b-sda1 +SH.FMC_A0.ConfNb=1 +SH.FMC_A1.0=FMC_A1,11b-sda1 +SH.FMC_A1.ConfNb=1 +SH.FMC_A10.0=FMC_A10,11b-sda1 +SH.FMC_A10.ConfNb=1 +SH.FMC_A14_BA0.0=FMC_BA0,FourSdramBanks1 +SH.FMC_A14_BA0.ConfNb=1 +SH.FMC_A15_BA1.0=FMC_BA1,FourSdramBanks1 +SH.FMC_A15_BA1.ConfNb=1 +SH.FMC_A2.0=FMC_A2,11b-sda1 +SH.FMC_A2.ConfNb=1 +SH.FMC_A3.0=FMC_A3,11b-sda1 +SH.FMC_A3.ConfNb=1 +SH.FMC_A4.0=FMC_A4,11b-sda1 +SH.FMC_A4.ConfNb=1 +SH.FMC_A5.0=FMC_A5,11b-sda1 +SH.FMC_A5.ConfNb=1 +SH.FMC_A6.0=FMC_A6,11b-sda1 +SH.FMC_A6.ConfNb=1 +SH.FMC_A7.0=FMC_A7,11b-sda1 +SH.FMC_A7.ConfNb=1 +SH.FMC_A8.0=FMC_A8,11b-sda1 +SH.FMC_A8.ConfNb=1 +SH.FMC_A9.0=FMC_A9,11b-sda1 +SH.FMC_A9.ConfNb=1 +SH.FMC_D0_DA0.0=FMC_D0,sd-8b-d1 +SH.FMC_D0_DA0.ConfNb=1 +SH.FMC_D1_DA1.0=FMC_D1,sd-8b-d1 +SH.FMC_D1_DA1.ConfNb=1 +SH.FMC_D2_DA2.0=FMC_D2,sd-8b-d1 +SH.FMC_D2_DA2.ConfNb=1 +SH.FMC_D3_DA3.0=FMC_D3,sd-8b-d1 +SH.FMC_D3_DA3.ConfNb=1 +SH.FMC_D4_DA4.0=FMC_D4,sd-8b-d1 +SH.FMC_D4_DA4.ConfNb=1 +SH.FMC_D5_DA5.0=FMC_D5,sd-8b-d1 +SH.FMC_D5_DA5.ConfNb=1 +SH.FMC_D6_DA6.0=FMC_D6,sd-8b-d1 +SH.FMC_D6_DA6.ConfNb=1 +SH.FMC_D7_DA7.0=FMC_D7,sd-8b-d1 +SH.FMC_D7_DA7.ConfNb=1 +SH.FMC_SDCLK.0=FMC_SDCLK,11b-sda1 +SH.FMC_SDCLK.ConfNb=1 +SH.FMC_SDNCAS.0=FMC_SDNCAS,11b-sda1 +SH.FMC_SDNCAS.ConfNb=1 +SH.FMC_SDNRAS.0=FMC_SDNRAS,11b-sda1 +SH.FMC_SDNRAS.ConfNb=1 +SH.FMC_SDNWE.0=FMC_SDNWE,11b-sda1 +SH.FMC_SDNWE.ConfNb=1 +SH.GPXTI11.0=GPIO_EXTI11 +SH.GPXTI11.ConfNb=1 +SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 +SPI1.CalculateBaudRate=25.0 MBits/s +SPI1.Direction=SPI_DIRECTION_2LINES +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler +SPI1.Mode=SPI_MODE_MASTER +SPI1.VirtualType=VM_MASTER +UART5.IPParameters=VirtualMode +UART5.VirtualMode=Asynchronous +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/projects/ad719x_iio/app/ad719x_iio.c b/projects/ad719x_iio/app/ad719x_iio.c index 9cad3fbd..7264fb95 100644 --- a/projects/ad719x_iio/app/ad719x_iio.c +++ b/projects/ad719x_iio/app/ad719x_iio.c @@ -606,6 +606,20 @@ static int iio_ad719x_prepare_transfer(void *dev, uint32_t mask) uint16_t new_mask; uint8_t num_of_channels; + /* The UART interrupt needs to be prioritized over the GPIO (end of conversion) interrupt. + * If not, the GPIO interrupt may occur during the period where there is a UART read happening + * for the READBUF command. If UART interrupts are not prioritized, then it would lead to missing of + * characters in the IIO command sent from the client. */ +#if(DATA_CAPTURE_MODE == CONTINUOUS_DATA_CAPTURE) +#if(ACTIVE_PLATFORM == STM32_PLATFORM) + ret = no_os_irq_set_priority(trigger_irq_desc, TRIGGER_INT_ID, + RDY_GPIO_PRIORITY); + if(ret) { + return ret; + } +#endif +#endif + #if defined (DEV_AD7194) #if (INPUT_CONFIG == DIFFERENTIAL_INPUT) num_of_channels = NO_OF_CHANNELS / 2; @@ -821,6 +835,16 @@ static int iio_ad719x_submit_samples(struct iio_device_data *iio_dev_data) no_os_swap(data_read[0], data_read[2]); data_read[3] = 0; +#if (ACTIVE_PLATFORM == STM32_PLATFORM) + /* Clear pending Interrupt before enabling back the trigger. + * Else , a spurious interrupt is observed after a legitimate interrupt, + * as SPI SDO is on the same pin and is mistaken for an interrupt event */ + ret = no_os_irq_clear_pending(trigger_irq_desc, TRIGGER_INT_ID); + if (ret) { + return ret; + } +#endif + ret = no_os_irq_enable(trigger_irq_desc, TRIGGER_INT_ID); if (ret) { return ret; @@ -892,6 +916,16 @@ static int32_t ad719x_trigger_handler(struct iio_device_data *iio_dev_data) return ret; } +#if (ACTIVE_PLATFORM == STM32_PLATFORM) + /* Clear pending Interrupt before enabling back the trigger. + * Else , a spurious interrupt is observed after a legitimate interrupt, + * as SPI SDO is on the same pin and is mistaken for an interrupt event */ + ret = no_os_irq_clear_pending(trigger_irq_desc, TRIGGER_INT_ID); + if (ret) { + return ret; + } +#endif + ret = iio_trig_enable(ad719x_hw_trig_desc); if (ret) { return ret; diff --git a/projects/ad719x_iio/app/ad719x_user_config.c b/projects/ad719x_iio/app/ad719x_user_config.c index 86f4eb06..6d62e6bc 100644 --- a/projects/ad719x_iio/app/ad719x_user_config.c +++ b/projects/ad719x_iio/app/ad719x_user_config.c @@ -22,8 +22,9 @@ /******************************************************************************/ /* Define SPI init parameters structure for AD719X */ struct no_os_spi_init_param spi_init_params = { - .max_speed_hz = 10000000, // Max SPI Speed + .max_speed_hz = MAX_SPI_BAUDRATE, // Max SPI Speed .chip_select = SPI_CSB, // Chip Select + .device_id = SPI_DEVICE_ID, .mode = NO_OS_SPI_MODE_3, // CPOL = 1, CPHA = 1 .platform_ops = &spi_ops, .extra = &spi_extra_init_params // SPI extra configurations @@ -32,13 +33,15 @@ struct no_os_spi_init_param spi_init_params = { /* Define GPIO cs pin init parameters structure */ struct no_os_gpio_init_param gpio_cs_init = { .number = SPI_CSB, - .platform_ops = &mbed_gpio_ops, + .port = SPI_CS_PORT, + .platform_ops = &gpio_ops, .extra = NULL }; /* Define GPIO miso pin init parameters structure */ struct no_os_gpio_init_param gpio_miso_init = { .number = RDY_PIN, + .port = RDY_PORT, .platform_ops = &gpio_ops, .extra = NULL }; @@ -46,6 +49,7 @@ struct no_os_gpio_init_param gpio_miso_init = { /* Define GPIO sync pin init parameters structure */ struct no_os_gpio_init_param gpio_sync_init = { .number = SYNC_PIN, + .port = SYNC_PORT, .platform_ops = &gpio_ops, .extra = &gpio_sync_init_params }; @@ -74,4 +78,4 @@ struct ad719x_init_param ad719x_init_params = { #elif defined(DEV_AD7195) .chip_id = AD7195 #endif -}; \ No newline at end of file +}; diff --git a/projects/ad719x_iio/app/app_config.c b/projects/ad719x_iio/app/app_config.c index efb1e55c..0b829efc 100644 --- a/projects/ad719x_iio/app/app_config.c +++ b/projects/ad719x_iio/app/app_config.c @@ -35,13 +35,17 @@ struct no_os_uart_init_param uart_init_params = { .size = NO_OS_UART_CS_8, .parity = NO_OS_UART_PAR_NO, .stop = NO_OS_UART_STOP_1_BIT, +#if (ACTIVE_PLATFORM == STM32_PLATFORM) + .asynchronous_rx = true, + .irq_id = UART_IRQ_ID, +#endif .platform_ops = &uart_ops, .extra = &uart_extra_init_params }; /* External interrupt init parameters */ static struct no_os_irq_init_param trigger_gpio_irq_params = { - .irq_ctrl_id = 0, + .irq_ctrl_id = TRIGGER_INT_ID, .platform_ops = &trigger_gpio_irq_ops, .extra = &trigger_gpio_irq_extra_params }; @@ -55,10 +59,12 @@ static struct no_os_callback_desc ext_int_callback_desc = { /* I2C init parameters */ static struct no_os_i2c_init_param no_os_i2c_init_params = { - .device_id = 0, + .device_id = I2C_DEVICE_ID, .platform_ops = &i2c_ops, .max_speed_hz = 100000, +#if(ACTIVE_PLATFORM == MBED_PLATFORM) .extra = &i2c_extra_init_params +#endif }; /* EEPROM init parameters */ @@ -148,6 +154,10 @@ int32_t init_system(void) { int32_t ret; +#if (ACTIVE_PLATFORM == STM32_PLATFORM) + stm32_system_init(); +#endif + ret = init_uart(); if (ret) { return ret; diff --git a/projects/ad719x_iio/app/app_config.h b/projects/ad719x_iio/app/app_config.h index 2410b167..0ae865fb 100644 --- a/projects/ad719x_iio/app/app_config.h +++ b/projects/ad719x_iio/app/app_config.h @@ -23,6 +23,7 @@ /******************************************************************************/ /* List of supported platforms*/ #define MBED_PLATFORM 1 +#define STM32_PLATFORM 2 /* List of data capture modes for AD719X device */ #define CONTINUOUS_DATA_CAPTURE 0 @@ -85,6 +86,21 @@ #define trigger_gpio_irq_ops mbed_gpio_irq_ops #define trigger_gpio_handle 0 // Unused macro #define TRIGGER_INT_ID GPIO_IRQ_ID1 +#elif (ACTIVE_PLATFORM == STM32_PLATFORM) +#include "app_config_stm32.h" +/* Redefine the init params structure mapping wrt platform */ +#define gpio_ops stm32_gpio_ops +#define spi_ops stm32_spi_ops +#define i2c_ops stm32_i2c_ops +#define uart_ops stm32_uart_ops +#define irq_platform_ops stm32_gpio_irq_ops +#define trigger_gpio_irq_ops stm32_gpio_irq_ops +#define TRIGGER_INT_ID RDY_PIN +#define trigger_gpio_handle 0 +#define spi_extra_init_params stm32_spi_extra_init_params +#define uart_extra_init_params stm32_uart_extra_init_params +#define trigger_gpio_irq_extra_params stm32_trigger_gpio_irq_init_params +#define gpio_sync_init_params stm32_gpio_sync_extra_init_params #else #error "No/Invalid active platform selected" #endif diff --git a/projects/ad719x_iio/app/app_config_mbed.h b/projects/ad719x_iio/app/app_config_mbed.h index b36ed075..6a67bc46 100644 --- a/projects/ad719x_iio/app/app_config_mbed.h +++ b/projects/ad719x_iio/app/app_config_mbed.h @@ -2,7 +2,7 @@ * @file app_config_mbed.h * @brief Header file for Mbed platform configurations ******************************************************************************** - * Copyright (c) 2021-23 Analog Devices, Inc. + * Copyright (c) 2021-24 Analog Devices, Inc. * All rights reserved. * * This software is proprietary to Analog Devices, Inc. and its licensors. @@ -28,6 +28,7 @@ /********************** Macros and Constants Definition ***********************/ /******************************************************************************/ /* Pin mapping for AD719x w.r.t Arduino Headers */ +#define MAX_SPI_BAUDRATE 10000000 #define SPI_CSB ARDUINO_UNO_D10 #define SPI_HOST_SDO ARDUINO_UNO_D11 #define SPI_HOST_SDI ARDUINO_UNO_D12 @@ -60,6 +61,12 @@ * */ #define SYNC_PIN ARDUINO_UNO_D4 +#define I2C_DEVICE_ID 0 // Unused +#define SPI_DEVICE_ID 0 // Unused +#define SPI_CS_PORT 0 // Unused +#define SYNC_PORT 0 // Unused +#define RDY_PORT 0 // Unused + /******************************************************************************/ /********************** Public/Extern Declarations ****************************/ /******************************************************************************/ diff --git a/projects/ad719x_iio/app/app_config_stm32.c b/projects/ad719x_iio/app/app_config_stm32.c new file mode 100644 index 00000000..aa4f55d3 --- /dev/null +++ b/projects/ad719x_iio/app/app_config_stm32.c @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file app_config_stm32.c + * @brief STM32 Specific configuration files for AD719x IIO Application + * @details This module contains the STM32 platform specific configurations +******************************************************************************** +* Copyright (c) 2024 Analog Devices, Inc. +* All rights reserved. +* +* This software is proprietary to Analog Devices, Inc. and its licensors. +* By using this software you agree to the terms of the associated +* Analog Devices Software License Agreement. +*******************************************************************************/ + +/******************************************************************************/ +/***************************** Include Files **********************************/ +/******************************************************************************/ + +#include "no_os_error.h" +#include "app_config_stm32.h" + +/******************************************************************************/ +/********************* Macros and Constants Definition ************************/ +/******************************************************************************/ + +/******************************************************************************/ +/******************** Variables and User Defined Data Types *******************/ +/******************************************************************************/ + +/* UART STM32 Platform Specific Init Parameters */ +struct stm32_uart_init_param stm32_uart_extra_init_params = { + .huart = APP_UART_HANDLE +}; + +/* SPI STM32 Platform Specific Init Parameters */ +struct stm32_spi_init_param stm32_spi_extra_init_params = { + .chip_select_port = SPI_CS_PORT, + .get_input_clock = HAL_RCC_GetPCLK2Freq +}; + +/* STM32 GPIO IRQ specific parameters */ +struct stm32_gpio_irq_init_param stm32_trigger_gpio_irq_init_params = { + .port_nb = RDY_PORT, +}; + +/* SYNC gpio STM32 platform specific parameters */ +struct stm32_gpio_init_param stm32_gpio_sync_extra_init_params = { + .mode = GPIO_MODE_OUTPUT_PP, + .speed = GPIO_SPEED_FREQ_VERY_HIGH +}; + +/******************************************************************************/ +/************************** Functions Declaration *****************************/ +/******************************************************************************/ + +/******************************************************************************/ +/************************** Functions Definition ******************************/ +/******************************************************************************/ + +/** + * @brief Initialize the STM32 system peripherals + * @return None + */ +void stm32_system_init(void) +{ + HAL_Init(); + SystemClock_Config(); + MX_GPIO_Init(); + MX_SPI1_Init(); + MX_UART5_Init(); + MX_I2C1_Init(); +} diff --git a/projects/ad719x_iio/app/app_config_stm32.h b/projects/ad719x_iio/app/app_config_stm32.h new file mode 100644 index 00000000..420f3de0 --- /dev/null +++ b/projects/ad719x_iio/app/app_config_stm32.h @@ -0,0 +1,75 @@ +/***************************************************************************//** + * @file app_config_stm32.h + * @brief Header file for STM32 platform configurations +******************************************************************************** + * Copyright (c) 2024 Analog Devices, Inc. + * All rights reserved. + * + * This software is proprietary to Analog Devices, Inc. and its licensors. + * By using this software you agree to the terms of the associated + * Analog Devices Software License Agreement. +*******************************************************************************/ + +#ifndef APP_CONFIG_STM32_H_ +#define APP_CONFIG_STM32_H_ + +/******************************************************************************/ +/***************************** Include Files **********************************/ +/******************************************************************************/ + +#include "stm32_uart.h" +#include "stm32_spi.h" +#include "stm32_i2c.h" +#include "stm32_gpio.h" +#include "stm32_gpio_irq.h" +#include "main.h" + +/******************************************************************************/ +/********************** Macros and Constants Definition ***********************/ +/******************************************************************************/ + +/* Note: The SDP-K1 board with the STM32F469NI MCU has been used +* for developing the firmware. The below parameters will change depending +* on the controller used. */ +#define HW_CARRIER_NAME SDP-K1 + +/* STM32 SPI Specific parameters */ +#define MAX_SPI_BAUDRATE 10000000 +#define SPI_DEVICE_ID 1 // SPI1 +#define SPI_CS_PORT 0 // GPIO Port A +#define SPI_CSB 15 // PA_15 + +/* STM32 UART specific parameters */ +#define APP_UART_HANDLE &huart5 + +/* UART Device ID */ +#define UART_IRQ_ID UART5_IRQn + +/* I2C Device ID */ +#define I2C_DEVICE_ID 1 // I2C1 + +/* RDY specific Port and Pin */ +#define RDY_PORT 6 // Port G +#define RDY_PIN 11 // PG_11 + +/* Sync specific Port and Pin */ +#define SYNC_PORT 6 // Port G +#define SYNC_PIN 9 // PG_9 + +/* Priority for Ready Interrupt */ +#define RDY_GPIO_PRIORITY 1 + +/******************************************************************************/ +/********************** Variables and User Defined Data Types *****************/ +/******************************************************************************/ +extern I2C_HandleTypeDef hi2c1; +extern SPI_HandleTypeDef hspi1; +extern struct stm32_uart_init_param stm32_uart_extra_init_params; +extern struct stm32_spi_init_param stm32_spi_extra_init_params; +extern struct stm32_i2c_init_param stm32_i2c_extra_init_params; +extern struct stm32_gpio_irq_init_param stm32_trigger_gpio_irq_init_params; +extern struct stm32_gpio_init_param stm32_gpio_sync_extra_init_params; +extern UART_HandleTypeDef huart5; +extern void stm32_system_init(); + +#endif // APP_CONFIG_STM32_H_ diff --git a/projects/ad719x_iio/app/stm32_gpio_irq_generated.c b/projects/ad719x_iio/app/stm32_gpio_irq_generated.c new file mode 100644 index 00000000..8c6fe065 --- /dev/null +++ b/projects/ad719x_iio/app/stm32_gpio_irq_generated.c @@ -0,0 +1,82 @@ +/***************************************************************************//** + * @file stm32_gpio_irq_generated.c + * @brief GPIO IRQ specific functions for STM32 platform +******************************************************************************** + * Copyright (c) 2024 Analog Devices, Inc. + * All rights reserved. + * + * This software is proprietary to Analog Devices, Inc. and its licensors. + * By using this software you agree to the terms of the associated + * Analog Devices Software License Agreement. +*******************************************************************************/ + +/******************************************************************************/ +/***************************** Include Files **********************************/ +/******************************************************************************/ + +#include "no_os_error.h" +#include "stm32_hal.h" + +/******************************************************************************/ +/********************* Macros and Constants Definition ************************/ +/******************************************************************************/ + +/******************************************************************************/ +/******************** Variables and User Defined Data Types *******************/ +/******************************************************************************/ + +/******************************************************************************/ +/************************** Functions Declaration *****************************/ +/******************************************************************************/ + +/******************************************************************************/ +/************************** Functions Definition ******************************/ +/******************************************************************************/ + +/** + * @brief Get the IRQ ID + * @param pin_nb[in] - Pin number + * @param irq_id[out] - Interrupt ID + * @return 0 if successful, negative error code otherwise. + */ +int stm32_get_exti_irq_id_from_pin(uint8_t pin_nb, IRQn_Type *irq_id) +{ + /* Note: The irq_id number used here are specific to STM32F469NI MCU on the SDP-K1 board + * The below parameters will change depending on the controller used. + * */ + switch(pin_nb) { + case 4: + *irq_id = EXTI4_IRQn; + break; + case 0: + *irq_id = EXTI0_IRQn; + break; + case 2: + *irq_id = EXTI2_IRQn; + break; + case 1: + *irq_id = EXTI1_IRQn; + break; + case 3: + *irq_id = EXTI3_IRQn; + break; + case 5: + case 6: + case 7: + case 8: + case 9: + *irq_id = EXTI9_5_IRQn; + break; + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + *irq_id = EXTI15_10_IRQn; + break; + default: + return -ENOSYS; + } + return 0; +} diff --git a/projects/ad719x_iio/src.mk b/projects/ad719x_iio/src.mk index 8f8d15b5..fb9f1c45 100644 --- a/projects/ad719x_iio/src.mk +++ b/projects/ad719x_iio/src.mk @@ -11,5 +11,13 @@ SRC_DIRS += $(LIBRARIES_PATH)/precision-converters-library/board_info SRC_DIRS += $(LIBRARIES_PATH)/precision-converters-library/common SRC_DIRS += $(LIBRARIES_PATH)/precision-converters-library/sdp_k1_sdram +ifeq 'mbed' '$(PLATFORM)' +# ALL_IGNORED_FILES variable used for excluding particular source files in SRC_DIRS in Build +SRC_DIRS += $(LIBRARIES_PATH)/no-OS/drivers/platform/mbed +ALL_IGNORED_FILES += $(PROJECT_APP_PATH)/app_config_stm32.c +ALL_IGNORED_FILES += $(PROJECT_APP_PATH)/stm32_gpio_irq_generated.c +ALL_IGNORED_FILES += $(PROJECT_APP_PATH)/app_config_stm32.h + # Extra Macros override NEW_CFLAGS += -DACTIVE_PLATFORM=MBED_PLATFORM +endif