打印

【试用】+GD32F207ZES--Modbus+AD +DA +Uart+GPIO

[复制链接]
1355|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
181wh|  楼主 | 2016-4-20 13:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 181wh 于 2016-4-23 09:54 编辑

感谢ST官方和21IC举办这次活动,并有幸得到到GD32 Colibri-F207ZE板,进行了测试,测试还在继续进行,报告还会继续更新。

1.测试目的:
1.1测试Modbus在GD32F207ZE板上的应用;
1.2 测试GD32F207ZE在开发环境KEIL的适应性。
2.测试环境:
2.1硬件:
2.1.1  GD32 Colibri-F207ZE板;
2.1.2  小口USB线(下载兼供电);
2.1.3  笔记本电脑;
2.2软件:
2.2.1 Win7(64位)操作系统;
2.2.2  MDK5.16A;
2.2.3KEPServrExV4.0;
2.2.4 基于Modbus的应用测试软件;
3.测试情况:
3.1 串口—Uart1;
3.2  输出口—PE0、PE1、PE2、PE3(开关量输出);
3.3 输入口—PD14、PD15(KEY1、KEY2蓝按键);
3.4  AD接口—外部模拟量输入PC0(CH10)、PC2(CH12)、PC3(CH13)、PF6(CH4)、PF7(CH5)、PF8(CH6)、;
3.5 PWM输出—PA5;
3.6 TIM2(1ms定时中断);



测试用程序:
1.主程序
int main(void)
{
    /* 配置评估板*/
    EvbSetupBoard();
    SysTickConfig();
    GPIO_Config();
    Adc_Init();
    Dac2_Init();


    EvbLedControl(LED3,LED_ON);  //receEnable
    localAddr = 0x01;  //设置地址为01
    while(1)
    {
   timeProc();
   checkComm0Modbus();
   
   
  if((Register_coil[0] & 0x0001) == 1)    //PE.0
   GPIO_SetBits(GPIOE,GPIO_PIN_0);      
  else GPIO_ResetBits(GPIOE,GPIO_PIN_0);
   
  if((Register_coil[0] & 0x0002) == 2)    //PE.1
   GPIO_SetBits(GPIOE,GPIO_PIN_1);   
  else GPIO_ResetBits(GPIOE,GPIO_PIN_1);
  
  if((Register_coil[0] & 0x0004) == 4)    //PE.2
   GPIO_SetBits(GPIOE,GPIO_PIN_2);      
  else GPIO_ResetBits(GPIOE,GPIO_PIN_2);


  if((Register_coil[0] & 0x0008) == 8)    //PE.3
   GPIO_SetBits(GPIOE,GPIO_PIN_3);     
  else GPIO_ResetBits(GPIOE,GPIO_PIN_3);   
  
  
  if(GPIO_ReadInputBit(GPIOD, GPIO_PIN_14) == 1)  //PD.14
   H_SET_BIT(Register_coil[1],00);
  else
   H_CLR_BIT(Register_coil[1],00);
  
  if(GPIO_ReadInputBit(GPIOD, GPIO_PIN_15) == 1)  //PD.15
   H_SET_BIT(Register_coil[1],01);
  else
   H_CLR_BIT(Register_coil[1],01);
      
  Dac2_Set_Vol(Register_ram[8]);
  
  Register_ram[10] = Get_Adc(10);
  Register_ram[11] = Get_Adc(12);
  Register_ram[12] = Get_Adc(13);
  Register_ram[13] = Get_Adc3(4);
  Register_ram[14] = Get_Adc3(5);
  Register_ram[15] = Get_Adc3(6);
  }
}


2.ADC设置程序
void  Adc_Init(void)
{  
ADC_InitPara ADC_InitStructure;
GPIO_InitPara GPIO_InitStructure;
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC | RCC_APB2PERIPH_ADC1, ENABLE );  
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOF | RCC_APB2PERIPH_ADC3, ENABLE );  
  RCC_ADCCLKConfig(RCC_ADCCLK_APB2_DIV6);  

GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8;  
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AIN;  
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_Init(GPIOF, &GPIO_InitStructure);   

ADC_InitStructure.ADC_Mode = ADC_MODE_INDEPENDENT;
ADC_InitStructure.ADC_Mode_Scan = DISABLE;
ADC_InitStructure.ADC_Mode_Continuous = DISABLE;
ADC_InitStructure.ADC_Trig_External = ADC_EXTERNAL_TRIGGER_MODE_NONE;
ADC_InitStructure.ADC_Data_Align = ADC_DATAALIGN_RIGHT;
ADC_InitStructure.ADC_Channel_Number = 2;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Init(ADC3, &ADC_InitStructure);

ADC_Enable(ADC1,ENABLE);
ADC_Calibration(ADC1);

ADC_Enable(ADC3,ENABLE);
ADC_Calibration(ADC3);

3.DAC设置程序

void Dac2_Init(void)
{  
  GPIO_InitPara  GPIO_InitStructure;
  DAC_InitPara DAC_InitType;
        
  RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA, ENABLE);
  RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_DAC, ENABLE);
           
  GPIO_InitStructure.GPIO_Pin = GPIO_PIN_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);  
  DAC_InitStructure.DAC_Trigger=DAC_TRIGGER_NONE;   
  DAC_InitType.DAC_WaveType=DAC_WAVEGENE_NONE;  
  DAC_InitType. DAC_LFSRNoise_AmplitudeTriangle=DAC_LFSR_BIT0;
  DAC_InitType.DAC_OutputBuffer=DAC_OUTPUTBUFFER_DISABLE;
  DAC_Init(DAC_CHANNEL_2,&DAC_InitType);
  DAC_DMA_Enable(DAC_CHANNEL_2, ENABLE);
  DAC_SetChannel2Data(DAC_ALIGN_12B_R, 0);
DAC_Enable(DAC_CHANNEL_2,ENABLE);
}


4.GPIO设置程序
void GPIO_Config(void)
{
    GPIO_InitPara GPIO_InitStructure;
    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOE,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
    GPIO_Init(GPIOE,&GPIO_InitStructure);

    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOD,ENABLE);
  
   GPIO_InitStructure.GPIO_Pin = GPIO_PIN_14 | GPIO_PIN_15 ;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_14 | GPIO_PIN_15;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
}


沙发
vivilzb1985| | 2016-4-20 21:33 | 只看该作者
怎这个还是modbus协议的应用的?多看看的。。

使用特权

评论回复
板凳
181wh|  楼主 | 2016-4-26 09:09 | 只看该作者
vivilzb1985 发表于 2016-4-20 21:33
怎这个还是modbus协议的应用的?多看看的。。

是要测试芯片在Modbus通讯下的稳定性,测试结果还是比较好的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

79

帖子

1

粉丝