diff --git a/Example/1-ADC_Demo/Libraries/doc/version.txt b/Example/1-ADC_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/1-ADC_Demo/Libraries/doc/version.txt +++ b/Example/1-ADC_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/1-ADC_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/1-ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/1-ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/1-ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/1-ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/10-Interrupt_Priority_Set_Demo/Libraries/doc/version.txt b/Example/10-Interrupt_Priority_Set_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/10-Interrupt_Priority_Set_Demo/Libraries/doc/version.txt +++ b/Example/10-Interrupt_Priority_Set_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/10-Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/11-Systick_Demo/Libraries/doc/version.txt b/Example/11-Systick_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/11-Systick_Demo/Libraries/doc/version.txt +++ b/Example/11-Systick_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/11-Systick_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/11-Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/11-Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/11-Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/11-Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/12-Dual_Core_Demo/Libraries/doc/version.txt b/Example/12-Dual_Core_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/12-Dual_Core_Demo/Libraries/doc/version.txt +++ b/Example/12-Dual_Core_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/12-Dual_Core_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/12-Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/12-Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/12-Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/12-Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/2-LED_Blink_Demo/Libraries/doc/version.txt b/Example/2-LED_Blink_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/2-LED_Blink_Demo/Libraries/doc/version.txt +++ b/Example/2-LED_Blink_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/2-LED_Blink_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/2-LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/2-LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/2-LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/2-LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/3-PIT_Demo/Libraries/doc/version.txt b/Example/3-PIT_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/3-PIT_Demo/Libraries/doc/version.txt +++ b/Example/3-PIT_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/3-PIT_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/3-PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/3-PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/3-PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/3-PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/4-Encoder_Demo/Libraries/doc/version.txt b/Example/4-Encoder_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/4-Encoder_Demo/Libraries/doc/version.txt +++ b/Example/4-Encoder_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/4-Encoder_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/4-Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/4-Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/4-Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/4-Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/5-UART_Demo/Libraries/doc/version.txt b/Example/5-UART_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/5-UART_Demo/Libraries/doc/version.txt +++ b/Example/5-UART_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/5-UART_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/5-UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/5-UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/5-UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/5-UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/6-Printf_Demo/Libraries/doc/version.txt b/Example/6-Printf_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/6-Printf_Demo/Libraries/doc/version.txt +++ b/Example/6-Printf_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/6-Printf_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/6-Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/6-Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/6-Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/6-Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/7-GPIO_Interrupt_Demo/Libraries/doc/version.txt b/Example/7-GPIO_Interrupt_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/7-GPIO_Interrupt_Demo/Libraries/doc/version.txt +++ b/Example/7-GPIO_Interrupt_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/7-GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/8-EEPROM_Demo/Libraries/doc/version.txt b/Example/8-EEPROM_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/8-EEPROM_Demo/Libraries/doc/version.txt +++ b/Example/8-EEPROM_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/8-EEPROM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/8-EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/8-EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/8-EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/8-EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Example/9-PWM_Demo/Libraries/doc/version.txt b/Example/9-PWM_Demo/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Example/9-PWM_Demo/Libraries/doc/version.txt +++ b/Example/9-PWM_Demo/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c b/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Example/9-PWM_Demo/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Example/9-PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Example/9-PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Example/9-PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Example/9-PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Seekfree_TC264_Opensource_Library/.cproject b/Seekfree_TC264_Opensource_Library/.cproject index 0a9696e..0952b7b 100644 --- a/Seekfree_TC264_Opensource_Library/.cproject +++ b/Seekfree_TC264_Opensource_Library/.cproject @@ -267,11 +267,7 @@ - TASKING VX-toolset for TriCore: control program v6.3r1 Build 19041558 - TASKING VX-toolset for TriCore: object linker v6.3r1 Build 19041558 - TASKING VX-toolset for TriCore: assembler v6.3r1 Build 19041558 TASKING program builder v6.3r1 Build 19041558 - TASKING VX-toolset for TriCore: C compiler v6.3r1 Build 19041558 diff --git a/Seekfree_TC264_Opensource_Library/Libraries/doc/version.txt b/Seekfree_TC264_Opensource_Library/Libraries/doc/version.txt index 6d829bd..b85cd50 100644 --- a/Seekfree_TC264_Opensource_Library/Libraries/doc/version.txt +++ b/Seekfree_TC264_Opensource_Library/Libraries/doc/version.txt @@ -1,2 +1,9 @@ V1.0.0 - 初始版本 \ No newline at end of file + 初始版本 + + +V1.0.1 + 对总钻风摄像头的场中断进行修改,判断标志位为0才采集下一幅图像,避免出现访问冲突 + 修改SPI初始化中的错误,引用了固定的SPI2基地址 + 修复STM中无法使用STM1的问题 + 修复gtm pwm中最大占空比只有GTM_ATOM0_PWM_DUTY_MAX设置有效的问题 \ No newline at end of file diff --git a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_gtm_pwm.c b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_gtm_pwm.c index 881b3c3..7b079c9 100644 --- a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_gtm_pwm.c +++ b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_gtm_pwm.c @@ -281,7 +281,15 @@ void gtm_pwm_init(ATOM_PIN_enum pwmch, uint32 freq, uint32 duty) g_atomConfig.synchronousUpdateEnabled = TRUE; g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); - IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); + switch(atom_channel->atom) + { + case 0: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM0_PWM_DUTY_MAX); break; + case 1: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM1_PWM_DUTY_MAX); break; + case 2: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM2_PWM_DUTY_MAX); break; + case 3: g_atomConfig.dutyCycle = (uint32)((uint64)duty * g_atomConfig.period / GTM_ATOM3_PWM_DUTY_MAX); break; + } + + IfxGtm_Atom_Pwm_init(&g_atomDriver, &g_atomConfig); IfxGtm_Atom_Pwm_start(&g_atomDriver, TRUE); } diff --git a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_spi.c b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_spi.c index 7ae3f99..4fdb826 100644 --- a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_spi.c +++ b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_spi.c @@ -279,7 +279,7 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata moudle = IfxQspi_getAddress((IfxQspi_Index)spi_n); - bacon.U = MODULE_QSPI2.BACON.U; + bacon.U = moudle->BACON.U; bacon.B.DL = 7; bacon.B.IDLE = 1; @@ -300,11 +300,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata i = 0; while(i < (len-1)) { - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; modata++; midata++; i++; @@ -314,11 +314,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata //发送最后一个数据 if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); IfxQspi_writeTransmitFifo(moudle, *modata); - while(MODULE_QSPI2.STATUS.B.TXFIFOLEVEL != 0); + while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(MODULE_QSPI2.STATUS.B.RXFIFOLEVEL == 0); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)MODULE_QSPI2.RXEXIT.U; + else (void)moudle->RXEXIT.U; } diff --git a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_stm_systick.c b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_stm_systick.c index 4f98a4c..3c3ec77 100644 --- a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_stm_systick.c +++ b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_libraries/zf_stm_systick.c @@ -35,7 +35,7 @@ void systick_delay(STMN_enum stmn, uint32 time) uint32 stm_clk; stm_clk = IfxStm_getFrequency(IfxStm_getAddress((IfxStm_Index)stmn)); - IfxStm_waitTicks(&MODULE_STM0, (uint32)((uint64)stm_clk*time/1000000000)); + IfxStm_waitTicks(IfxStm_getAddress((IfxStm_Index)stmn), (uint32)((uint64)stm_clk*time/1000000000)); } diff --git a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c index dcca1e9..014b435 100644 --- a/Seekfree_TC264_Opensource_Library/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c +++ b/Seekfree_TC264_Opensource_Library/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X.c @@ -325,8 +325,12 @@ void mt9v03x_vsync(void) { CLEAR_GPIO_FLAG(MT9V03X_VSYNC_PIN); now_col = 0; - DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); - dma_start(MT9V03X_DMA_CH); + if(!mt9v03x_finish_flag)//查看图像数组是否使用完毕,如果未使用完毕则不开始采集,避免出现访问冲突 + { + DMA_SET_DESTINATION(MT9V03X_DMA_CH, (void *)&mt9v03x_image[0]); + dma_start(MT9V03X_DMA_CH); + } + } diff --git a/Seekfree_TC264_Opensource_Library/USER/Cpu0_Main.c b/Seekfree_TC264_Opensource_Library/USER/Cpu0_Main.c index 3231482..486ec0e 100644 --- a/Seekfree_TC264_Opensource_Library/USER/Cpu0_Main.c +++ b/Seekfree_TC264_Opensource_Library/USER/Cpu0_Main.c @@ -27,8 +27,6 @@ int core0_main(void) //用户在此处调用各种初始化函数等 - - enableInterrupts(); while (TRUE)