我是接口温度传感器[i2c - pin 2, 3]代码与dsps源代码,所以它必须发送数据到dsps应用程序,我有什么改变,请提到功能,谢谢
你好,普拉桑特·维利扬吉里,
我假设您可以使用app_uart_push()来将数据从您的i2c推入ble缓冲区,这通常由UART的接收回调调用,它将数据推入ble缓冲区。您可以在串口服务参考应用说明中找到关于串口应用程序的所有可用信息和最重要的功能。
由于MT_dialog
我正在使用DSPS源代码项目,我正在成功地从传感器读取数据,现在我想通过蓝牙而不是通过UART发送这个数据到DSPS android app,如何做,请提到功能和步骤
我正在使用DSPS源代码-sps_设备项目,我正在成功地从传感器读取数据,现在我想通过蓝牙将此数据发送到DSPS android应用程序,如何操作,请说明功能和步骤
这不是由对话框实现的,您将不得不调整现有的DSPS实现以适应您的需要,以便将数据发送到DSPS应用程序,您可以以user_外围_push()(用于SDK5版本)函数为例,并调整所需的功能,以便将I2C数据从I2C传感器推送到ble缓冲区(而不是UART),然后再推送到链接的另一端。如果你不想模拟串行端口,你只是想通过BLE发送传感器数据,你不必使用DSPS应用程序,但使用自定义配置文件实现,并通知客户端每次你有传感器数据。如果你需要一个这样的例子,你可以看一下app_ble_peripheral,其中有一个以稳定的速率间隔触发通知的例子。
Q1。请说明将数据发送到DSPS app的功能,问题2。还指定通过BLE发送数据的DSP源代码API函数和smartband IOT源代码API函数是否相同
我正在使用DSPS源代码中的user_send_ble_data(p_data,length)函数将数据发送到DSPS应用程序,是否有其他函数可用于通过ble将数据发送到DSPS
1.正如我在之前的帖子中提到的,DSPS应用程序模拟串行通信,如果你只是想把数据发送到链路的另一边,你可以使用比DSPS应用程序更简单的方法,您提到的特定函数从由UART填充的DSPS缓冲区提取数据,并将它们作为通知发送到链接的另一端。这是DSPS用来将数据从缓冲区发送到链路另一端的功能。
2.DSP和IoT项目是完全不同的项目,使用完全不同的自定义配置文件。本质上,两者都在使用通知/指示以及写入和读取命令来进行通信(正如所有BLE项目所做的那样),但两种参考设计的架构完全不同。DSP使用3个特征模拟无线链路上的串行端口,IoT使用10个特征发送传感器数据,每个传感器或处理的值对应一个特征。
//外部无效读取\传感器(无效)//我的请求//外部无符号字符传感器数据[20];//我的请求
无效用户拉取(bool init,bool success){Bool send_flow_on = false;Static bool tx_busy_flag = false;静态uint8轮等待=0;静态uint16_t长度;
// Read_sensor() //我的REQ -读取传感器通过I2C
如果(init){如果(! tx_busy_flag){如果((长度=用户缓冲区项目计数(&periph\u到可缓冲区))>0)如果(长度>TX_等待|级别| |(轮次_等待++)>=TX_等待|轮次){uint8_t *p_data = NULL;
轮次等待=0;tx_busy_标志=真;
长度=(长度>发送大小?发送大小:长度);length = (length < TX_START_FRAME_DATA_SIZE ?((((length - TX_START_FRAME_DATA_SIZE) / TX_CONTINUE_FRAME_DATA_SIZE) * TX_CONTINUE_FRAME_DATA_SIZE + TX_START_FRAME_DATA_SIZE));长度=用户缓冲区读取地址(&periph\u to\u ble\u buffer,&p\u data,TX\u SIZE);p_data[0] = 'P';p_data[1] =“P”;p_数据[2]=“p”;p_data[3] = 'A';
长度= 4;user_send_ble_data (p_data、长度);//用户发送数据((const uint8_t*)传感器数据,长度);//我的请求}}}其他的{tx_busy_flag = false;如果(成功)用户缓冲区\释放\项(&periph\ u to\ ble\ u缓冲区,长度);
if((length = user_buffer_item_count(& peripher_to_ble_buffer)) > TX_WAIT_LEVEL){uint8_t *p_data = NULL;
长度=(长度>发送大小?发送大小:长度);TX_START_FRAME_DATA_SIZE = ((((length - TX_START_FRAME_DATA_SIZE) / TX_CONTINUE_FRAME_DATA_SIZE) * TX_CONTINUE_FRAME_DATA_SIZE + TX_START_FRAME_DATA_SIZE);长度=用户缓冲区读取地址(&periph\u to\u ble\u buffer,&p\u data,TX\u SIZE);p_data[0] = 'V';p_数据[1]=“V”;p_data [2] = ' V ';p_data[3] = 'B';
长度= 4;user_send_ble_data (p_data、长度);//用户发送数据((const uint8_t*)传感器数据,长度);//我的请求}}以上代码工作良好,我得到一些数据在DSPA移动应用程序,如果我启用//我的REQ注释,代码进入无休止的循环,我不能得到任何数据
在I2C Read_sensor()中添加延迟是否会影响代码??,即使在物联网项目和i2c eeprom中,我也没有看到任何延迟……谢谢你!
代码是否被困在一个无休止的循环中?当您读取调用的I2C(read_Sensor())时,您看到您的代码被捕获了吗?我不明白你在说什么延迟,你在读取I2C传感器时插入了延迟?
无效读取传感器(无效){
//读取传感器1();
/ / Read_sensor_2 ();
uart_init (UART_BAUDRATE_115K2 3);uart_flow_off ();uint8_t东西[]= {0 x0a,‘R’,‘e’,‘e’,' 3 ',' y ', 0 x0d ' > '};
uart_write (12, NULL);uart_完成_传输();
timer0_general_test (10);//定时器中断延迟
}
*********************************************************************************************************************************void timer0\常规\用户\回调\函数(void){静态uint8_t n=0;
//当通过10*100ms时如果(5==n){n = 0;uart_init (UART_BAUDRATE_115K2 3);uart_flow_off ();uint8_t something[]={0x0A,'R','e','a','d','y',0x0D,0x0A',>'};
uart_写入((uint8*)超时_到期,10,空);uart_完成_传输();timeout_expiration——;//printf_字符串(“\nVP!”);}n++;}************************************************************************************************************************************空白timer0_general_test (uint8_t times_seconds){//printf_字符串(“\n\r\n\r”);/ / printf_string ("***********************\ n \ r”);//printf_字符串(“*TIMER0常规测试*\n\r”);/ / printf_string ("***********************\ n \ r”);
//输入设置的停止计时器计时器0_停止();
超时\过期=时间\秒;
//注册SWTIM_IRQn的irq回调函数定时器0寄存器回调(定时器0通用回调函数);
//启用计时器0时钟设置tmr启用(CLK\U PER\U REG\U tmr\U启用);
//设置TIMER0、TIMER2时钟划分因子为8,则TIM0 Fclk为F = 16MHz/8 = 2Mhzset_tmr_div (CLK_PER_REG_TMR_DIV_8);
//清除PWM设置寄存器以不生成PWMtimer0_set_pwm_high_counter (NO_PWM);定时器0设置pwm低电平计数器(无pwm);
//设置定时器的2MHz源时钟除以10,因此Fclk = 2MHz/10 = 200kHztimer0_init (TIM0_CLK_FAST PWM_MODE_ONE TIM0_CLK_DIV_BY_10);
//重新加载100ms (T = 1/200kHz * RELOAD_100MS = 0,000005 * 20000 = 100ms)timer0_set_pwm_on_counter (RELOAD_100MS);
//启用SWTIM_IRQn irq定时器0_启用_irq();
//printf_字符串(“\n\rLED将每秒更改一次状态。\n\r”);//printf_字符串(“\n\r测试将为:”)运行;/ / printf_byte (timeout_expiration);/ / printf_string(“秒。\ n \ r”);
//开始计时器0timer0_start ();/ / printf_string(“\ n \ rTIMER0开始!”);
//等待所需的秒数while(超时\过期);
//禁用计时器0、计时器2时钟set_tmr_enable (CLK_PER_REG_TMR_DISABLED);//printf_字符串(“\n\rTIMER0已停止!\n\r”);/ / printf_string(“\ n \撕裂测试\ n \ r”);}*************************************************************************************************我已经包含了timer0延迟中断,这个--while(timeout_expiration);--行内函数void timer0_general_test(uint8_t times_seconds)使代码无限循环,可能是什么问题,单是timer0代码工作正常,DSP内部不工作
你可以把这张票注销,我找到答案了,谢谢你的帮助……
我读了上面的对话,我也在做一些非常相似的事情。但我的工作才刚刚开始。你能帮我完成项目的第一部分,即从传感器读取数据吗?如果你能给我指出我应该看的资料和我需要处理的确切函数,那就太好了。谢谢
嗨,高拉夫班萨尔我使用tha AN-B-029_V1.0作为自定义配置文件来读取数据并通过蓝牙发送,此rar扩展还包含教程pdf。这将对您有所帮助
http://support.dialog-semiconductor.com/resource/b-029-tutorial-files-su...
谢谢你的回复。我在sample128上工作,并通过文件AN-B-029了解情况,按照您的建议开发了一个蓝牙智能定制配置文件1.0。这导致了移动应用程序Blueloupe和我的DVK板之间的有效通信。但我仍然不知道如何将我的电路板集成到任何传感器上,以及如何通过DSPS应用程序集成。如果你能给我指出更多关于这方面的文档或指南,我将非常感激。
嗨,高拉夫班萨尔我不明白你的问题-如何集成我的板到任何传感器,也通过DSPS应用程序??,如果您在BLE客户端-BLE服务器中工作,请参阅此链接http://support.dialog-semiconductor.com/iot-server-dsps-hostdata-transmi..。
我的应用程序是得到温度传感器数据可见的实时在dsps应用程序。那么你认为最合适的医生应该是谁呢?
嗨,高拉夫班萨尔UM-B-038 DA14580串口服务参考application_v2.0 -帮助与DSPS
你好,普拉桑特·维利扬吉里,
我假设您可以使用app_uart_push()来将数据从您的i2c推入ble缓冲区,这通常由UART的接收回调调用,它将数据推入ble缓冲区。您可以在串口服务参考应用说明中找到关于串口应用程序的所有可用信息和最重要的功能。
由于MT_dialog
我正在使用DSPS源代码项目,我正在成功地从传感器读取数据,现在我想通过蓝牙而不是通过UART发送这个数据到DSPS android app,如何做,请提到功能和步骤
我正在使用DSPS源代码-sps_设备项目,我正在成功地从传感器读取数据,现在我想通过蓝牙将此数据发送到DSPS android应用程序,如何操作,请说明功能和步骤
你好,普拉桑特·维利扬吉里,
这不是由对话框实现的,您将不得不调整现有的DSPS实现以适应您的需要,以便将数据发送到DSPS应用程序,您可以以user_外围_push()(用于SDK5版本)函数为例,并调整所需的功能,以便将I2C数据从I2C传感器推送到ble缓冲区(而不是UART),然后再推送到链接的另一端。如果你不想模拟串行端口,你只是想通过BLE发送传感器数据,你不必使用DSPS应用程序,但使用自定义配置文件实现,并通知客户端每次你有传感器数据。如果你需要一个这样的例子,你可以看一下app_ble_peripheral,其中有一个以稳定的速率间隔触发通知的例子。
由于MT_dialog
Q1。请说明将数据发送到DSPS app的功能,
问题2。还指定通过BLE发送数据的DSP源代码API函数和smartband IOT源代码API函数是否相同
我正在使用DSPS源代码中的user_send_ble_data(p_data,length)函数将数据发送到DSPS应用程序,是否有其他函数可用于通过ble将数据发送到DSPS
你好,普拉桑特·维利扬吉里,
1.正如我在之前的帖子中提到的,DSPS应用程序模拟串行通信,如果你只是想把数据发送到链路的另一边,你可以使用比DSPS应用程序更简单的方法,您提到的特定函数从由UART填充的DSPS缓冲区提取数据,并将它们作为通知发送到链接的另一端。这是DSPS用来将数据从缓冲区发送到链路另一端的功能。
2.DSP和IoT项目是完全不同的项目,使用完全不同的自定义配置文件。本质上,两者都在使用通知/指示以及写入和读取命令来进行通信(正如所有BLE项目所做的那样),但两种参考设计的架构完全不同。DSP使用3个特征模拟无线链路上的串行端口,IoT使用10个特征发送传感器数据,每个传感器或处理的值对应一个特征。
由于MT_dialog
//外部无效读取\传感器(无效)//我的请求
//外部无符号字符传感器数据[20];//我的请求
无效用户拉取(bool init,bool success)
{
Bool send_flow_on = false;
Static bool tx_busy_flag = false;
静态uint8轮等待=0;
静态uint16_t长度;
// Read_sensor() //我的REQ -读取传感器通过I2C
如果(init)
{
如果(! tx_busy_flag)
{
如果((长度=用户缓冲区项目计数(&periph\u到可缓冲区))>0)
如果(长度>TX_等待|级别| |(轮次_等待++)>=TX_等待|轮次)
{
uint8_t *p_data = NULL;
轮次等待=0;
tx_busy_标志=真;
长度=(长度>发送大小?发送大小:长度);
length = (length < TX_START_FRAME_DATA_SIZE ?((((length - TX_START_FRAME_DATA_SIZE) / TX_CONTINUE_FRAME_DATA_SIZE) * TX_CONTINUE_FRAME_DATA_SIZE + TX_START_FRAME_DATA_SIZE));
长度=用户缓冲区读取地址(&periph\u to\u ble\u buffer,&p\u data,TX\u SIZE);
p_data[0] = 'P';
p_data[1] =“P”;
p_数据[2]=“p”;
p_data[3] = 'A';
长度= 4;
user_send_ble_data (p_data、长度);
//用户发送数据((const uint8_t*)传感器数据,长度);//我的请求
}
}
}
其他的
{
tx_busy_flag = false;
如果(成功)
用户缓冲区\释放\项(&periph\ u to\ ble\ u缓冲区,长度);
if((length = user_buffer_item_count(& peripher_to_ble_buffer)) > TX_WAIT_LEVEL)
{
uint8_t *p_data = NULL;
轮次等待=0;
tx_busy_标志=真;
长度=(长度>发送大小?发送大小:长度);
TX_START_FRAME_DATA_SIZE = ((((length - TX_START_FRAME_DATA_SIZE) / TX_CONTINUE_FRAME_DATA_SIZE) * TX_CONTINUE_FRAME_DATA_SIZE + TX_START_FRAME_DATA_SIZE);
长度=用户缓冲区读取地址(&periph\u to\u ble\u buffer,&p\u data,TX\u SIZE);
p_data[0] = 'V';
p_数据[1]=“V”;
p_data [2] = ' V ';
p_data[3] = 'B';
长度= 4;
user_send_ble_data (p_data、长度);
//用户发送数据((const uint8_t*)传感器数据,长度);//我的请求
}
}
以上代码工作良好,我得到一些数据在DSPA移动应用程序,如果我启用//我的REQ注释,代码进入无休止的循环,我不能得到任何数据
在I2C Read_sensor()中添加延迟是否会影响代码??,即使在物联网项目和i2c eeprom中,我也没有看到任何延迟……
谢谢你!
你好,普拉桑特·维利扬吉里,
代码是否被困在一个无休止的循环中?当您读取调用的I2C(read_Sensor())时,您看到您的代码被捕获了吗?我不明白你在说什么延迟,你在读取I2C传感器时插入了延迟?
由于MT_dialog
无效读取传感器(无效)
{
//读取传感器1();
/ / Read_sensor_2 ();
uart_init (UART_BAUDRATE_115K2 3);
uart_flow_off ();
uint8_t东西[]= {0 x0a,‘R’,‘e’,‘e’,' 3 ',' y ', 0 x0d ' > '};
uart_write (12, NULL);
uart_完成_传输();
timer0_general_test (10);//定时器中断延迟
}
*********************************************************************************************************************************
void timer0\常规\用户\回调\函数(void)
{
静态uint8_t n=0;
//当通过10*100ms时
如果(5==n)
{
n = 0;
uart_init (UART_BAUDRATE_115K2 3);
uart_flow_off ();
uint8_t something[]={0x0A,'R','e','a','d','y',0x0D,0x0A',>'};
uart_写入((uint8*)超时_到期,10,空);
uart_完成_传输();
timeout_expiration——;
//printf_字符串(“\nVP!”);
}
n++;
}
************************************************************************************************************************************
空白timer0_general_test (uint8_t times_seconds)
{
//printf_字符串(“\n\r\n\r”);
/ / printf_string ("***********************\ n \ r”);
//printf_字符串(“*TIMER0常规测试*\n\r”);
/ / printf_string ("***********************\ n \ r”);
//输入设置的停止计时器
计时器0_停止();
超时\过期=时间\秒;
//注册SWTIM_IRQn的irq回调函数
定时器0寄存器回调(定时器0通用回调函数);
//启用计时器0时钟
设置tmr启用(CLK\U PER\U REG\U tmr\U启用);
//设置TIMER0、TIMER2时钟划分因子为8,则TIM0 Fclk为F = 16MHz/8 = 2Mhz
set_tmr_div (CLK_PER_REG_TMR_DIV_8);
//清除PWM设置寄存器以不生成PWM
timer0_set_pwm_high_counter (NO_PWM);
定时器0设置pwm低电平计数器(无pwm);
//设置定时器的2MHz源时钟除以10,因此Fclk = 2MHz/10 = 200kHz
timer0_init (TIM0_CLK_FAST PWM_MODE_ONE TIM0_CLK_DIV_BY_10);
//重新加载100ms (T = 1/200kHz * RELOAD_100MS = 0,000005 * 20000 = 100ms)
timer0_set_pwm_on_counter (RELOAD_100MS);
//启用SWTIM_IRQn irq
定时器0_启用_irq();
//printf_字符串(“\n\rLED将每秒更改一次状态。\n\r”);
//printf_字符串(“\n\r测试将为:”)运行;
/ / printf_byte (timeout_expiration);
/ / printf_string(“秒。\ n \ r”);
//开始计时器0
timer0_start ();
/ / printf_string(“\ n \ rTIMER0开始!”);
//等待所需的秒数
while(超时\过期);
//禁用计时器0、计时器2时钟
set_tmr_enable (CLK_PER_REG_TMR_DISABLED);
//printf_字符串(“\n\rTIMER0已停止!\n\r”);
/ / printf_string(“\ n \撕裂测试\ n \ r”);
}
*************************************************************************************************
我已经包含了timer0延迟中断,这个--while(timeout_expiration);--行内函数void timer0_general_test(uint8_t times_seconds)使代码无限循环,可能是什么问题,单是timer0代码工作正常,DSP内部不工作
你可以把这张票注销,我找到答案了,谢谢你的帮助……
你好,普拉桑特·维利扬吉里,
我读了上面的对话,我也在做一些非常相似的事情。但我的工作才刚刚开始。你能帮我完成项目的第一部分,即从传感器读取数据吗?如果你能给我指出我应该看的资料和我需要处理的确切函数,那就太好了。
谢谢
嗨,高拉夫班萨尔
我使用tha AN-B-029_V1.0作为自定义配置文件来读取数据并通过蓝牙发送,此rar扩展还包含教程pdf。这将对您有所帮助
http://support.dialog-semiconductor.com/resource/b-029-tutorial-files-su...
你好,普拉桑特·维利扬吉里,
谢谢你的回复。我在sample128上工作,并通过文件AN-B-029了解情况,按照您的建议开发了一个蓝牙智能定制配置文件1.0。这导致了移动应用程序Blueloupe和我的DVK板之间的有效通信。但我仍然不知道如何将我的电路板集成到任何传感器上,以及如何通过DSPS应用程序集成。如果你能给我指出更多关于这方面的文档或指南,我将非常感激。
嗨,高拉夫班萨尔
我不明白你的问题-如何集成我的板到任何传感器,也通过DSPS应用程序??,
如果您在BLE客户端-BLE服务器中工作,请参阅此链接
http://support.dialog-semiconductor.com/iot-server-dsps-hostdata-transmi..。
你好,普拉桑特·维利扬吉里,
我的应用程序是得到温度传感器数据可见的实时在dsps应用程序。那么你认为最合适的医生应该是谁呢?
嗨,高拉夫班萨尔
UM-B-038 DA14580串口服务参考application_v2.0 -帮助与DSPS