haha丶 发表于 2021-4-21 17:08

关于BLUENRG-LP改例程实现芯片采集内部电压值通过蓝牙传输到另一蓝牙串口打印的问题

<p>我使用了官方给的BLE Serial&nbsp;Port例程和LL drivers里的ADC例程</p>

<p>在把ADC例程主函数中的一些初始化的函数放到SERIAL port例程的主函数后,将循环部分做成了一个函数</p>

<pre>
<code>unsigned long adc;

#if CLIENT
void adcadcadc(void)
{
        uint32_t nVBattRawVal = 0;
        uint8_t ret;
    /* Check the ADC flag End Of Down Sampler conversion */
    if( LL_ADC_IsActiveFlag_EODS(ADC) == 1) {

      /* Get the battery raw value from the Down Sampler */
      nVBattRawVal = LL_ADC_DSGetOutputData(ADC);
                        adc = LL_ADC_GetADCConvertedValueBatt(ADC, nVBattRawVal, USER_DATAWIDTH);
      /* Printout the output value */
      //printf("Battery voltage %d mV\r\n", LL_ADC_GetADCConvertedValueBatt(ADC, nVBattRawVal, USER_DATAWIDTH));
                        ret = aci_gatt_clt_write_without_resp(connection_handle, rx_handle + 1,USER_DATAWIDTH ,
                                           (uint8_t *)adc);
                        if (ret != BLE_STATUS_SUCCESS)
                        {
      printf("Error to send ");
                        }
      /* Clear the ADC flag End Of Down Sampler conversion */
      LL_ADC_ClearFlag_EODS(ADC);

      /* Toggle the conversion/activity LED */
      BSP_LED_Toggle(BSP_LED1);
      
      /* Add 100 ms of delay between each measure */
      LL_mDelay(100);
      
      /* Restart ADC conversion */
      LL_ADC_StartConversion(ADC);
    }
   
    /* Check the ADC flag overrun of Down Sampler */
    if( LL_ADC_IsActiveFlag_OVRDS(ADC) == 1) {
      
      /* Clear the ADC flag overrun of Down Sampler */
      LL_ADC_ClearFlag_OVRDS(ADC);

      /* Turn on the LED2 is overrun occurs */
      BSP_LED_On(BSP_LED2);
    }


       
}
#endif
</code></pre>

<p>然后把这个函数放到了APP_Tick()中,结果并没有实现</p>

<p>是我aci_gatt_clt_write_without_resp()应用的不对吗?还是思路有问题?</p>

littleshrimp 发表于 2021-4-21 17:14

<p>你的adcadcadc函数在#if CLIENT宏定义里边,在这个例程你是使用的CLIENT模式吗?</p>

<p>还有调试的时候能读到正确的ADC值不?</p>

haha丶 发表于 2021-4-21 17:20

littleshrimp 发表于 2021-4-21 17:14
你的adcadcadc函数在#if CLIENT宏定义里边,在这个例程你是使用的CLIENT模式吗?

还有调试的时候能读到 ...

<p>是使用的CLIENT,主机可以串口输出数据,从机没有收到,两个个还能互相串口通信</p>

littleshrimp 发表于 2021-4-21 17:55

haha丶 发表于 2021-4-21 17:20
是使用的CLIENT,主机可以串口输出数据,从机没有收到,两个个还能互相串口通信

<p>先试试分开处理,先看看ADC读到的数据是否正常排除ADC的问题,或者使用一个固定的变量替代ADC数据看能否正常发送排除蓝牙通信部分问题。</p>

haha丶 发表于 2021-4-21 22:15

<p>应该是aci_gatt_clt_write_without_resp()这个函数用的不对吧,我不管怎么写,从机都收不到数据</p>

haha丶 发表于 2021-4-22 09:46

haha丶 发表于 2021-4-21 22:15
应该是aci_gatt_clt_write_without_resp()这个函数用的不对吧,我不管怎么写,从机都收不到数据

<p>解决了,确实是那个函数使用错误,低级错误<img height="53" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/sad.gif" width="54" /></p>

haha丶 发表于 2021-4-22 09:58

<div class='shownolgin' data-isdigest='no'>littleshrimp 发表于 2021-4-21 17:55
先试试分开处理,先看看ADC读到的数据是否正常排除ADC的问题,或者使用一个固定的变量替代ADC数据看能否 ...

<p>非常感谢您的帮助<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/congra.gif" width="48" /></p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

w494143467 发表于 2021-4-22 18:13

<div class='shownolgin' data-isdigest='no'><p>看着你们解决问题,真好~</p>
</div><script>showreplylogin();</script>

haha丶 发表于 2021-4-23 09:43

<div class='shownolgin' data-isdigest='no'><p>都是些新手小问题,当时不会或者没想到,论坛大佬有经验指点一下就解决了,还是非常感谢论坛大佬们的帮助!嘿嘿!</p>
</div><script>showreplylogin();</script>
页: [1]
查看完整版本: 关于BLUENRG-LP改例程实现芯片采集内部电压值通过蓝牙传输到另一蓝牙串口打印的问题