打印
[全站每周活动汇总]

[APT32F173评测] 我的RISC-V试用测试

[复制链接]
1025|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 地瓜patch 于 2024-1-17 19:32 编辑

开搞了,收到二姨家送的开发板爱普特微电子173开发板,一块核心板,一块下载器,先上靓图






板子做的中规中矩,赞一个先
收到板子先上官网找资料学习
说实话官网资料略少,根据指引从官网下到了剑池CDK软件包


一顿操作猛如虎,
很不幸,目测改软件包大概率存在问题。
编译程序后下载,进度条卡在四分之一处,提示超时。


一通下载学习,然并卵。看了好多帖子,都没有谈到该问题。


突发奇想,从官网下个软件试试


下载,安装,编译,下载。果然正常了。说实话有点意外。


使用特权

评论回复
沙发
地瓜patch|  楼主 | 2024-1-13 09:12 | 只看该作者
本帖最后由 地瓜patch 于 2024-1-13 09:34 编辑

测试中,点了个灯,就喜欢csi_pin_toggle(PA0)语句,反转再反转
当然也可以用IO口置高拉低,实现IO口的控制
csi_gpio_port_set_high(GPIOA, wPinMask);

csi_gpio_port_set_low(GPIOA, wPinMask);
                        

IMG_20240113_091033.jpg (165.82 KB )

IMG_20240113_091033.jpg

使用特权

评论回复
板凳
地瓜patch|  楼主 | 2024-1-13 13:30 | 只看该作者
本帖最后由 地瓜patch 于 2024-1-15 23:10 编辑

测试FVR内部参考电压输出功能。可能因为测试万用表的精度问题。
略有偏差,测了一下usb的输出电压为4.79V,比5V要低不少。

csi_fvr_lvl_set(FVR, LVL_1V);输出1.024V


csi_fvr_lvl_set(FVR, LVL_2V);输出2.048V


csi_fvr_lvl_set(FVR, LVL_3V);输出3.072V




csi_fvr_lvl_set(FVR, LVL_4V);输出4.096V


使用特权

评论回复
地板
地瓜patch|  楼主 | 2024-1-15 23:06 | 只看该作者
本帖最后由 地瓜patch 于 2024-1-15 23:23 编辑

电机测试学习了下图的双电机驱动还没搞明白如何使用



先用熟悉的IO+驱动器测试了一下
#define MovLeft         0
#define MovRight        1

#define RSTSPEED        400
#define RUNSPEED        220

csi_pin_set_mux(PB8,PB8_OUTPUT);                        //PB8 配置为DIR
csi_pin_set_mux(PB9,PB9_OUTPUT);                        //PB9 配置为PWM


if(MOTO_SEL==Heater_Moto_ID)
  {
    if(MOV_DIR==MovLeft)
    {
      csi_pin_set_high(PB8); //M1 Moto Dir
    }else
        {
      csi_pin_set_low(PB8);;
    }
  }



  if(BREAK_POINT==1)
  {
    BREAK_POINT=0;
    MOV_STEP=LAST_STEP;
    LAST_STEP=0;
  }
        else
        {
    MOV_STEP=MOV_STEP<<1;
    }
  mydelay1();
  for(iStep=0;iStep<MOV_STEP;iStep++)
  {
    if(MOTO_SEL==Heater_Moto_ID)
    {
      if((Sen**.M1_SEN1==SET)||(Sen**.M1_SEN2==SET))
      {
        csi_pin_set_low(PB9);
        break;
      }
     csi_pin_toggle(PB9);
    }


    for(jSpeed=0;jSpeed<MOV_SPEED;jSpeed++)
    {
                if((Sen**.DOOR_SEN==1)&&(sport**.Move==1)){
              LAST_STEP=MOV_STEP-iStep+1;
        Sen**.M1_SEN1=RESET;       
        return ERR;
      }
    }
  }
  Sen**.M1_SEN1=RESET;



现在还存在几个问题
给电机一个动作会没有任何反应,给两个动作会丢失第一个动作。
开始运动前会抖动的比较厉害,哆嗦。
运动声音较大,还没找到原因,以前用这套驱动没出现这个问题。
电机发热比较严重,十几分钟就烫手。估计电流设置不合适。
还需要进一步优化解决



使用特权

评论回复
5
地瓜patch|  楼主 | 2024-1-16 21:56 | 只看该作者
本帖最后由 地瓜patch 于 2024-1-16 22:25 编辑

CRC控制器第一次在数据手册里看到有CRC控制器。
一开始直观的认为是一个硬件功能。
仔细看了又看,是一个软件功能。


仔细查找,的确是发现了一些端倪。
在C文件中给出了各个CRC校验的算法实现函数。
//进行CRC-32模式计算,种子值 0xffffffff,byTransData数组前3个数据
uint32_t csi_crc32_be(uint32_t wCrcSeed, uint8_t* pbyData, uint32_t wSize)
{
        uint32_t i;

        csp_crc_set_poly(CRC, 3);            //Set CRC-32
        csp_crc_refin_enable(CRC, DISABLE);  //Disable bitwise reversal of control of CRC input data
        csp_crc_refout_enable(CRC, DISABLE); //Disable bitwise reversal of control of CRC output data
        csp_crc_xorout_enable(CRC, DISABLE); //Disable XOR control of CRC output data
        csp_crc_set_seed(CRC, wCrcSeed);     //Set CRC seed value
        for (i=0; i<wSize; i++)
        {
                *(uint8_t *)(APB_CRC_BASE + 0x14 + (i%4)) = *pbyData; //Write data
                pbyData++;
        }
        return (csp_crc_get_result(CRC)); //Return the result of calculation
}


//进行CRC-16/CCITT模式计算,种子值0x00,byTransData数组前16个数据
uint16_t csi_crc16_ccitt( uint16_t hwCrcSeed, uint8_t *pbyData, uint32_t wSize)
{
        uint32_t i;

        csp_crc_set_poly(CRC, 0);            //Set CRC-CCITT
        csp_crc_refin_enable(CRC, ENABLE);   //Enables bitwise reversal of control of CRC input data
        csp_crc_refout_enable(CRC, ENABLE);  //Enables bitwise reversal of control of CRC output data
        csp_crc_xorout_enable(CRC, DISABLE); //Disable XOR control of CRC output data
        csp_crc_xorin_enable(CRC, DISABLE);  //Enables XOR control of CRC input data
        csp_crc_set_seed(CRC, hwCrcSeed);    //Set CRC seed value
        for (i=0; i<wSize; i++)
        {
                *(uint8_t *)(APB_CRC_BASE + 0x14 + (i%4)) = *pbyData; //Write data
                pbyData ++;
        }
        return ((uint16_t)csp_crc_get_result(CRC));  //Return the result of calculation
}


//进行CRC-16模式计算,种子值0x00,byTransData数组前5个数据
uint16_t csi_crc16(uint16_t hwCrcSeed, uint8_t* pbyData, uint32_t wSize)
{
        uint32_t i;

        csp_crc_set_poly(CRC, 2);              //Set CRC-16
        csp_crc_refin_enable(CRC, ENABLE);     //Enables bitwise reversal of control of CRC input data
        csp_crc_refout_enable(CRC, ENABLE);    //Enables bitwise reversal of control of CRC output data
        csp_crc_xorout_enable(CRC, DISABLE);   //Disable XOR control of CRC output data
        csp_crc_set_seed(CRC, hwCrcSeed);      //Set CRC seed value
        for (i=0; i<wSize; i++)               
        {
                *(uint8_t *)(APB_CRC_BASE + 0x14 + (i%4)) = *pbyData; //Write data
                pbyData ++;
        }
        return ((uint16_t)csp_crc_get_result(CRC));  //Return the result of calculation
}


//进行CRC-16 XMODEM模式计算,种子值0x00,byTransData数组前3个数据
uint16_t csi_crc16_itu(uint16_t hwCrcSeed, uint8_t* pbyData, uint32_t wSize)
{
        uint32_t i;

        csp_crc_set_poly(CRC, 0);            //Set CRC-CCITT
        csp_crc_refin_enable(CRC, DISABLE);  //Enables bitwise reversal of control of CRC input data
        csp_crc_refout_enable(CRC, DISABLE); //Enables bitwise reversal of control of CRC output data
        csp_crc_xorout_enable(CRC, DISABLE); //Disable XOR control of CRC output data
        csp_crc_set_seed(CRC, hwCrcSeed);    //Set CRC seed value
        for (i=0; i<wSize; i++)
        {
                *(uint8_t *)(APB_CRC_BASE + 0x14 + (i%4)) = *pbyData;  //Write data
                pbyData ++;
        }
        return ((uint16_t)csp_crc_get_result(CRC));  //Return the result of calculation
}


说句实话,我一直用RCR-16 Modbus校验,哈哈
CRC控制器还是少了。

使用特权

评论回复
6
地瓜patch|  楼主 | 2024-1-17 19:51 | 只看该作者
本帖最后由 地瓜patch 于 2024-1-17 19:59 编辑

本想测试一下休眠电流,测试一下低功耗lp_exi_wakeup_demo();
csi_pm_mode_e ePmMode = PM_MODE_SLEEP;       

lp_lpt_wakeup_deepsleep_demo();

csi_pm_mode_e ePmMode = PM_MODE_DEEPSLEEP;

发现板上的led不受控,又不想拆板子。

咋办嘞。


使用特权

评论回复
7
地瓜patch|  楼主 | 2024-1-17 20:16 | 只看该作者
本帖最后由 地瓜patch 于 2024-1-17 20:21 编辑

基本定时器pwm控制LED亮度tPwmCfg.byDutyCycle 为占空比,占空比越大亮度越大

int iRet = 0;
        csi_bt_pwm_config_t tPwmCfg;                                                        //BT PWM输出参数初始化配置结构体

#if !defined(USE_GUI)               
//        csi_pin_set_mux(PA1,  PA1_BT1_OUT);                                            //PA1  作为BT1 PWM输出引脚
//        csi_pin_set_mux(PB14, PB14_BT1_OUT);                                        //PB14 作为BT1 PWM输出引脚
        csi_pin_set_mux(PC11, PC11_BT1_OUT);                                        //PC11 作为BT1 PWM输出引脚
#endif
       
        //init timer pwm para config
        tPwmCfg.byIdleLevel = BT_PWM_IDLE_HIGH;                                        //PWM 输出空闲电平
        tPwmCfg.byStartLevel= BT_PWM_START_HIGH;                                //PWM 输出起始电平
        tPwmCfg.byDutyCycle = 50;                                                                //PWM 输出占空比(0 < DutyCycle < 100)               
        tPwmCfg.wFreq                 = 50;                                                                //PWM 输出频率
        //tPwmCfg.byInt           = BT_INTSRC_PEND | BT_INTSRC_CMP;        //PWM 中断配置(PEND and CMP)
        tPwmCfg.byInt                  = BT_INTSRC_NONE;
       
        csi_bt_pwm_init(BT1, &tPwmCfg);                                                        //初始化BT1 PWM输出
        csi_bt_start(BT1);                                                                                //启动BT1
       
        while(1)
        {
                NOP;
        }
       
        return iRet;


使用特权

评论回复
8
zwsam| | 2024-3-26 09:05 | 只看该作者
good

使用特权

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

本版积分规则

1260

主题

12543

帖子

27

粉丝