芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
钟志峰
精华 遥遥领先,星闪芯片BS25外设程序测试--Blinky

内容简介

本文利用星闪BS25开发板NL001测试一下官方sdk中的外设程序,以便熟悉外设的基本操作。

测试工具

Operating system:Windows 10 home

deveco-device-tool-all-in-one:1.1.1_beta2

DevTools_CFBB:1.0.5

Compiler:CFBB IDE 1.0.3

Sdk:20230928

BurnTool:5.0.34

DebugKits_CFBB:3.0.98

Python:3.8.10

VSCode:1.66.2

Here we go

本文通过写一个程序让这块开发板上的三颗LED轮流点亮:

图片

这几颗LED从下往上分别连接了BS25的S_AGPIO12、S_AGPIO07和S_MGPIO30,并且当GPIO输出高电平时LED会点亮。

我们采用blinky程序进行修改。先“python build.py standard-bs25-app-evb menuconfig”配置工程为blinky:

图片

图片

图片

图片

然后打开blinky_cmsis.c,修改以下代码:

图片

#defineLED_R S_AGPIO12

#defineLED_B S_AGPIO7

#defineLED_W S_MGPIO30

staticvoid *blinky_task(constchar *arg)

{

  unused(arg);

  uapi_pin_set_mode(LED_R, HAL_PIO_FUNC_GPIO);

  uapi_gpio_set_dir(LED_R, GPIO_DIRECTION_OUTPUT);

  uapi_gpio_set_val(LED_R, GPIO_LEVEL_LOW);

  uapi_pin_set_mode(LED_B, HAL_PIO_FUNC_GPIO);

  uapi_gpio_set_dir(LED_B, GPIO_DIRECTION_OUTPUT);

  uapi_gpio_set_val(LED_B, GPIO_LEVEL_LOW);

  uapi_pin_set_mode(LED_W, HAL_PIO_FUNC_GPIO);

  uapi_gpio_set_dir(LED_W, GPIO_DIRECTION_OUTPUT);

  uapi_gpio_set_val(LED_W, GPIO_LEVEL_LOW);

  while (1)

  {

      osDelay(1000);

      uapi_gpio_set_val(LED_R, GPIO_LEVEL_HIGH);

      uapi_gpio_set_val(LED_B, GPIO_LEVEL_LOW);

      uapi_gpio_set_val(LED_W, GPIO_LEVEL_LOW);

      osDelay(1000);

      uapi_gpio_set_val(LED_R, GPIO_LEVEL_LOW);

      uapi_gpio_set_val(LED_B, GPIO_LEVEL_HIGH);

      uapi_gpio_set_val(LED_W, GPIO_LEVEL_LOW);

      osDelay(1000);

      uapi_gpio_set_val(LED_R, GPIO_LEVEL_LOW);

      uapi_gpio_set_val(LED_B, GPIO_LEVEL_LOW);

      uapi_gpio_set_val(LED_W, GPIO_LEVEL_HIGH);

  }

  returnNULL;

}

完成后rebuild工程,烧录到板子中测试,发现LED根本不亮。

拿示波器分别测试三个IO口,发现电平是有变化的,所以怀疑是驱动能力不够,检查硬件大概是这样的情况:

图片

所以驱动能力不够是很有可能的。

尝试使用pinctrl来设置驱动能力和上下拉:

图片

也没有把LED点亮。

后来测试发现,是限流电阻太大,然后GPIO的电压也只有1.8V,开发板上的B和W两颗LED点亮电压高于1.8V的,所以导致了无法驱动的问题,程序本身应该是没啥问题的。

所以把LED R前的电阻短路掉,就可以正常点亮R这颗LED了(加不加上面的pinctrl代码都可以点亮),而另外两颗由于电压的关系无法点亮。

 

星闪
版块: 思尼克 星闪NearLink
2023/12/28 10:40
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
树莓派pico 2测评 - 初体验【工程师经验】+ 飞线【开源】zvs142857 2.1A,3A快充 充电宝迷你UC3842 开关电源优化全解析:攻克常见难题,提升性能飞腾CPU × DeepSeek大模型,双芯加持全系列稳跑
热门版块
查看更多
电子DIY
电子元器件
维修技术
抄图联盟
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计
开源项目

93

收藏

分享

微信扫码
分享给好友

评论