6224|8

62

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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

 

我使用了官方给的BLE Serial Port例程和LL drivers里的ADC例程

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

unsigned long adc[CMD_BUFF_SIZE];

#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[0] = 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[0]);
			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

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

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

image.png (32.88 KB, 下载次数: 0)

image.png

最新回复

看着你们解决问题,真好~   详情 回复 发表于 2021-4-22 18:13
点赞 关注
 
 

回复
举报

9798

帖子

24

TA的资源

版主

沙发
 

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

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

点评

是使用的CLIENT,主机可以串口输出数据,从机没有收到,两个个还能互相串口通信  详情 回复 发表于 2021-4-21 17:20
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
littleshrimp 发表于 2021-4-21 17:14 你的adcadcadc函数在#if CLIENT宏定义里边,在这个例程你是使用的CLIENT模式吗? 还有调试的时候能读到 ...

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

点评

先试试分开处理,先看看ADC读到的数据是否正常排除ADC的问题,或者使用一个固定的变量替代ADC数据看能否正常发送排除蓝牙通信部分问题。  详情 回复 发表于 2021-4-21 17:55
 
 
 

回复

9798

帖子

24

TA的资源

版主

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

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

点评

非常感谢您的帮助  详情 回复 发表于 2021-4-22 09:58
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

5
 

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

点评

解决了,确实是那个函数使用错误,低级错误  详情 回复 发表于 2021-4-22 09:46
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

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

解决了,确实是那个函数使用错误,低级错误

 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

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

非常感谢您的帮助

 
 
 

回复

1942

帖子

3

TA的资源

版主

8
 

看着你们解决问题,真好~

 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

9
 

都是些新手小问题,当时不会或者没想到,论坛大佬有经验指点一下就解决了,还是非常感谢论坛大佬们的帮助!嘿嘿!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表