北方 发表于 2021-8-13 15:58

【中科蓝讯AB32VG1 RISC-V评估板】电流电压检测项目开发

<p><span style="font-size:20px;">1.首先创建项目,项目名称 meterADC</span></p>

<p></p>

<p><span style="font-size:20px;">2、然后选择硬件,开通ADC,这里板子只支持ADC0,芯片支持多个通道,</span></p>

<p></p>

<p><span style="font-size:20px;">3、从文件中可以找到引脚的配置,其中AB32VG1 有 16 个通道的 10 bit 的 ADC 模块。</span></p>

<ul>
        <li>
        <p><span style="font-size:20px;">最大采样速度是 78k/s; ADC 模块时钟的最大速度是 1MHz</span></p>
        </li>
        <li>
        <p><span style="font-size:20px;">有内部 100k 的上拉电阻</span></p>
        </li>
</ul>

<p><span style="font-size:20px;">这里对应的是arduino接口的A3, 是ADC7,引脚PE.5</span></p>

<p></p>

<p><span style="font-size:20px;">4、创建新的文件adc.c,代码如下</span></p>

<pre>
<code class="language-cpp">#include &lt;rtthread.h&gt;
#include &lt;rtdevice.h&gt;

#define ADC_DEV_NAME      "adc0"      /* ADC 设备名称 */
#define ADC_DEV_CHANNEL   7         /* ADC 通道 */
#define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS      (1 &lt;&lt; 10)   /* 转换位数为10位 */

static int adc_vol_sample(int argc, char *argv[])
{
    rt_adc_device_t adc_dev;
    rt_uint32_t value, vol;
    rt_err_t ret = RT_EOK;

    /* 查找设备 */
    adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
    if (adc_dev == RT_NULL)
    {
      rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);
      return RT_ERROR;
    }

    /* 使能设备 */
    ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);

    /* 读取采样值 */
    value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
    rt_kprintf("the value is :%d \n", value);

    /* 转换为对应电压值 */
    vol = value * REFER_VOLTAGE / CONVERT_BITS;
    rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);

    /* 关闭通道 */
    ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);

    return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);</code></pre>

<p>编译并下载,就可以用finSH来用adc_vol_sample命令来读取A3的电压输入值,连接到采样电阻,就可以读取转换后的电压值。对应于电流值,也需要用采样电阻,把电流转换为电压,用ADC读取。</p>

<p>其中ADC部分的核心代码没有并未完全公开,大部分内容都封装到了 libhal.a 库文件中,但是使用rtthread可以直接无缝读取。</p>

<p><span style="font-size:20px;">5、蓝牙部分的猜想。</span></p>

<p><span style="font-size:20px;">整个开发板的最大悬疑就是蓝牙天线,虽然没有说明有蓝牙功能,但是却有蓝牙天线,因此,可以理解为这个芯片其实是一个蓝牙芯片,还带FM模块,但是因为驱动还没有适配成功,所以先作为通用MCU评测和使用,因此,后续如果软件更新,更值得期待。</span></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

littleshrimp 发表于 2021-8-13 18:44

<p>蓝牙没有对应的例程吗?</p>

freebsder 发表于 2021-8-13 23:10

<p>可能是蓝牙模块扩展也说不定呢</p>

hqli126 发表于 2021-8-14 14:09

有道理期待啊

北方 发表于 2021-8-16 16:33

littleshrimp 发表于 2021-8-13 18:44
蓝牙没有对应的例程吗?

<p>蓝牙模块是内置的,天线直接从引脚引出。</p>

<p>现在完全没有资料,例程就更没有了。</p>

nmg 发表于 2021-8-17 14:53

littleshrimp 发表于 2021-8-13 18:44
蓝牙没有对应的例程吗?

<p>和官方反馈了下,得到回复:目前还没有蓝牙例程,后面会出,时间不定</p>

<p>其他资料暂时也没有</p>

littleshrimp 发表于 2021-8-17 15:02

nmg 发表于 2021-8-17 14:53
和官方反馈了下,得到回复:目前还没有蓝牙例程,后面会出,时间不定

其他资料暂时也没有

<p>你问的是RTT吗?<br/>中科蓝迅能联系上不?<br/>硬件能上市软件理论上肯定要测试过啊</p>

nmg 发表于 2021-8-17 18:57

littleshrimp 发表于 2021-8-17 15:02
你问的是RTT吗?中科蓝迅能联系上不?硬件能上市软件理论上肯定要测试过啊

<p>对,RTT,涉及到中科蓝讯开发板的问题,他们也会和中科蓝讯沟通</p>

<p><img height="50" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/funk1.gif" width="53" />刚回复我:真没有,发展情况大致就像原帖作者猜测的那样</p>
页: [1]
查看完整版本: 【中科蓝讯AB32VG1 RISC-V评估板】电流电压检测项目开发