我是接口温度传感器[i2c - pin 2, 3]代码与dsps源代码,所以它必须发送数据到dsps应用程序,我有什么改变,请提到功能,谢谢
嗨prasanth.velliyangiri,
我假设您可以使用app_uart_push()来将数据从您的i2c推入ble缓冲区,这通常由UART的接收回调调用,它将数据推入ble缓冲区。您可以在串口服务参考应用说明中找到关于串口应用程序的所有可用信息和最重要的功能。
由于MT_dialog
我正在使用DSPS源代码项目,我正在成功地从传感器读取数据,现在我想通过蓝牙而不是通过UART发送这个数据到DSPS android app,如何做,请提到功能和步骤
我正在使用DSPS源代码- sps_device项目,我成功地从传感器读取数据,现在我想通过蓝牙发送数据,到DSPS android应用程序,如何做,请提到功能和步骤
这不是由对话框实现的,您将不得不调整现有的DSPS实现以适应您的需要,以便将数据发送到DSPS应用程序,您可以以user_外围_push()(用于SDK5版本)函数为例,并调整所需的功能,以便将I2C数据从I2C传感器推送到ble缓冲区(而不是UART),然后再推送到链接的另一端。如果你不想模拟串行端口,你只是想通过BLE发送传感器数据,你不必使用DSPS应用程序,但使用自定义配置文件实现,并通知客户端每次你有传感器数据。如果你需要一个这样的例子,你可以看一下app_ble_peripheral,其中有一个以稳定的速率间隔触发通知的例子。
Q1。请说明将数据发送到DSPS app的功能,Q2。还指定做DSPS源代码API函数,通过BLE发送数据和智能带IOT源代码API函数是相同的
我正在使用user_send_ble_data(p_data,长度)函数在DSPS源代码发送数据到DSPS应用程序,是否有任何其他函数可用来发送数据通过BLE到DSPS
1.正如我在之前的帖子中提到的,DSPS应用程序模拟串行通信,如果你只是想把数据发送到链路的另一边,你可以使用比DSPS应用程序更简单的方法,您提到的特定函数从由UART填充的DSPS缓冲区提取数据,并将它们作为通知发送到链接的另一端。这是DSPS用来将数据从缓冲区发送到链路另一端的功能。
2.DSPS和IoT项目是使用完全不同的自定义配置文件的完全不同的项目。本质上,两者都使用通知/指示和读写命令来进行通信(就像所有BLE项目所做的那样),但这两种参考设计的架构是完全不同的。DSPS使用3个特征通过无线链路模拟串口,物联网使用10个特征发送传感器数据,每个传感器或处理值对应一个特征。
// extern void Read_sensor(void) //我的REQ// extern unsigned char SensorData[20];/ /我的要求
Void user_ble_pull (bool init, bool success){Bool send_flow_on = false;Static bool tx_busy_flag = false;静态uint8_t rounds_waiting = 0;静态uint16_t长度;
// Read_sensor() //我的REQ -读取传感器通过I2C
如果(init){如果(! tx_busy_flag){If ((length = user_buffer_item_count(& peripher_to_ble_buffer)) > 0)if (length > TX_WAIT_LEVEL || (rounds_waiting++) >= TX_WAIT_ROUNDS){uint8_t *p_data = NULL;
rounds_waiting = 0;tx_busy_flag = true;
= (length > TX_SIZE ?TX_SIZE:长度);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));length = user_buffer_read_address(& peripher_to_ble_buffer, &p_data, TX_SIZE);p_data[0] = 'P';p_data[1] =“P”;p_data[2] =“P”;p_data[3] = 'A';
长度= 4;user_send_ble_data (p_data、长度);// user_send_ble_data((const uint8_t *)SensorData, length);/ /我的要求}}}其他的{tx_busy_flag = false;如果(成功)user_buffer_release_items (&periph_to_ble_buffer、长度);
if((length = user_buffer_item_count(& peripher_to_ble_buffer)) > TX_WAIT_LEVEL){uint8_t *p_data = NULL;
= (length > TX_SIZE ?TX_SIZE:长度);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);length = user_buffer_read_address(& peripher_to_ble_buffer, &p_data, TX_SIZE);p_data[0] = 'V';p_data [1] = ' V ';p_data [2] = ' V ';p_data[3] = 'B';
长度= 4;user_send_ble_data (p_data、长度);// user_send_ble_data((const uint8_t *)SensorData, length);/ /我的要求}}以上代码工作良好,我得到一些数据在DSPA移动应用程序,如果我启用//我的REQ注释,代码进入无休止的循环,我不能得到任何数据
在I2C Read_sensor()中添加延迟是否会影响代码??,即使在物联网项目和i2c eeprom中,我也没有看到任何延迟……谢谢你!
代码是否被困在了一个无尽的循环中?当您读取I2C (Read_Sensor())被调用时,您看到您的代码被捕获了吗?我不明白你在说什么延迟,你在读取I2C传感器时插入了延迟?
空白Read_sensor(空白){
/ / Read_sensor_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_finish_transfers ();
timer0_general_test (10);//定时器中断延迟
}
*********************************************************************************************************************************空白timer0_general_user_callback_function(空白){Static uint8_t n = 0;
//当通过10 * 100msIf (5 == n){n = 0;uart_init (UART_BAUDRATE_115K2 3);uart_flow_off ();uint8_t东西[]= {0 x0a,‘R’,‘e’,‘‘,‘d’,‘y’,0 x0d 0 x0a ' > '};
uart_write ((uint8 *) timeout_expiration 10 NULL);uart_finish_transfers ();timeout_expiration——;/ / printf_string(“\一步!”);}n + +;}************************************************************************************************************************************空白timer0_general_test (uint8_t times_seconds){/ / printf_string(“\ n \ r \ n \ r”);/ / printf_string ("***********************\ n \ r”);//printf_string("* TIMER0通用测试*\n\r");/ / printf_string ("***********************\ n \ r”);
//停止进入设置的定时器timer0_stop ();
timeout_expiration = times_seconds;
//注册SWTIM_IRQn的irq回调函数timer0_register_callback (timer0_general_user_callback_function);
//启用TIMER0时钟set_tmr_enable (CLK_PER_REG_TMR_ENABLED);
//设置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);timer0_set_pwm_low_counter (NO_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 irqtimer0_enable_irq ();
//printf_string("\n\rLED将改变状态每秒钟\n\r");//printf_string("\n\rTest将运行为:");/ / printf_byte (timeout_expiration);/ / printf_string(“秒。\ n \ r”);
/ /开始Timer0timer0_start ();/ / printf_string(“\ n \ rTIMER0开始!”);
//等待所需的秒数而(timeout_expiration);
//禁用TIMER0, TIMER2时钟set_tmr_enable (CLK_PER_REG_TMR_DISABLED);/ / printf_string(“\ n \ rTIMER0停! \ n \ r”);/ / printf_string(“\ n \撕裂测试\ n \ r”);}*************************************************************************************************我已经包含了timer0中断延迟,这个——while (timeout_expiration);——行函数void timer0_general_test(uint8_t times_seconds)使代码无限循环,什么可能的问题,单独的timer0代码工作良好,在DSPS不工作
你可以把这张票注销,我找到答案了,谢谢你的帮助……
我读了上面的对话,我也在做一些非常相似的事情。但我的工作才刚刚开始。你能帮我完成项目的第一部分,即从传感器读取数据吗?如果你能给我指出我应该看的资料和我需要处理的确切函数,那就太好了。谢谢。
嗨GauravBansal我正在使用AN-B-029_V1.0为自定义配置文件读取数据并通过蓝牙发送,这个rar扩展有教程pdf也..,这将对你有帮助
http://support.dialog semiconductor.com/resource/b - 029教程——文件——su..。
谢谢您的回复。我在sample128上工作,并通过doc AN-B-029开发一个蓝牙智能定制profile_V1.0,如您建议的。这使得移动应用Blueloupe和我的DVK板之间进行了有效的沟通。但我仍然不知道如何将我的电路板集成到任何传感器,也不知道如何通过DSPS应用程序。如果你能给我提供更多关于这方面的文档或指南,我将非常感激。
嗨GauravBansal我不明白你的问题-如何集成我的板到任何传感器,也通过DSPS应用程序??,如果你在BLE CLIENT - BLE SERVER中工作,请参考此链接http://support.dialog-semiconductor.com/iot-server-dsps-hostdata-transmi..。
我的应用程序是得到温度传感器数据可见的实时在dsps应用程序。那么你认为最合适的医生应该是谁呢?
嗨GauravBansalUM-B-038 DA14580串口服务参考application_v2.0 -帮助与DSPS
嗨prasanth.velliyangiri,
我假设您可以使用app_uart_push()来将数据从您的i2c推入ble缓冲区,这通常由UART的接收回调调用,它将数据推入ble缓冲区。您可以在串口服务参考应用说明中找到关于串口应用程序的所有可用信息和最重要的功能。
由于MT_dialog
我正在使用DSPS源代码项目,我正在成功地从传感器读取数据,现在我想通过蓝牙而不是通过UART发送这个数据到DSPS android app,如何做,请提到功能和步骤
我正在使用DSPS源代码- sps_device项目,我成功地从传感器读取数据,现在我想通过蓝牙发送数据,到DSPS android应用程序,如何做,请提到功能和步骤
嗨prasanth.velliyangiri,
这不是由对话框实现的,您将不得不调整现有的DSPS实现以适应您的需要,以便将数据发送到DSPS应用程序,您可以以user_外围_push()(用于SDK5版本)函数为例,并调整所需的功能,以便将I2C数据从I2C传感器推送到ble缓冲区(而不是UART),然后再推送到链接的另一端。如果你不想模拟串行端口,你只是想通过BLE发送传感器数据,你不必使用DSPS应用程序,但使用自定义配置文件实现,并通知客户端每次你有传感器数据。如果你需要一个这样的例子,你可以看一下app_ble_peripheral,其中有一个以稳定的速率间隔触发通知的例子。
由于MT_dialog
Q1。请说明将数据发送到DSPS app的功能,
Q2。还指定做DSPS源代码API函数,通过BLE发送数据和智能带IOT源代码API函数是相同的
我正在使用user_send_ble_data(p_data,长度)函数在DSPS源代码发送数据到DSPS应用程序,是否有任何其他函数可用来发送数据通过BLE到DSPS
嗨prasanth.velliyangiri,
1.正如我在之前的帖子中提到的,DSPS应用程序模拟串行通信,如果你只是想把数据发送到链路的另一边,你可以使用比DSPS应用程序更简单的方法,您提到的特定函数从由UART填充的DSPS缓冲区提取数据,并将它们作为通知发送到链接的另一端。这是DSPS用来将数据从缓冲区发送到链路另一端的功能。
2.DSPS和IoT项目是使用完全不同的自定义配置文件的完全不同的项目。本质上,两者都使用通知/指示和读写命令来进行通信(就像所有BLE项目所做的那样),但这两种参考设计的架构是完全不同的。DSPS使用3个特征通过无线链路模拟串口,物联网使用10个特征发送传感器数据,每个传感器或处理值对应一个特征。
由于MT_dialog
// extern void Read_sensor(void) //我的REQ
// extern unsigned char SensorData[20];/ /我的要求
Void user_ble_pull (bool init, bool success)
{
Bool send_flow_on = false;
Static bool tx_busy_flag = false;
静态uint8_t rounds_waiting = 0;
静态uint16_t长度;
// Read_sensor() //我的REQ -读取传感器通过I2C
如果(init)
{
如果(! tx_busy_flag)
{
If ((length = user_buffer_item_count(& peripher_to_ble_buffer)) > 0)
if (length > TX_WAIT_LEVEL || (rounds_waiting++) >= TX_WAIT_ROUNDS)
{
uint8_t *p_data = NULL;
rounds_waiting = 0;
tx_busy_flag = true;
= (length > TX_SIZE ?TX_SIZE:长度);
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));
length = user_buffer_read_address(& peripher_to_ble_buffer, &p_data, TX_SIZE);
p_data[0] = 'P';
p_data[1] =“P”;
p_data[2] =“P”;
p_data[3] = 'A';
长度= 4;
user_send_ble_data (p_data、长度);
// user_send_ble_data((const uint8_t *)SensorData, length);/ /我的要求
}
}
}
其他的
{
tx_busy_flag = false;
如果(成功)
user_buffer_release_items (&periph_to_ble_buffer、长度);
if((length = user_buffer_item_count(& peripher_to_ble_buffer)) > TX_WAIT_LEVEL)
{
uint8_t *p_data = NULL;
rounds_waiting = 0;
tx_busy_flag = true;
= (length > TX_SIZE ?TX_SIZE:长度);
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);
length = user_buffer_read_address(& peripher_to_ble_buffer, &p_data, TX_SIZE);
p_data[0] = 'V';
p_data [1] = ' V ';
p_data [2] = ' V ';
p_data[3] = 'B';
长度= 4;
user_send_ble_data (p_data、长度);
// user_send_ble_data((const uint8_t *)SensorData, length);/ /我的要求
}
}
以上代码工作良好,我得到一些数据在DSPA移动应用程序,如果我启用//我的REQ注释,代码进入无休止的循环,我不能得到任何数据
在I2C Read_sensor()中添加延迟是否会影响代码??,即使在物联网项目和i2c eeprom中,我也没有看到任何延迟……
谢谢你!
嗨prasanth.velliyangiri,
代码是否被困在了一个无尽的循环中?当您读取I2C (Read_Sensor())被调用时,您看到您的代码被捕获了吗?我不明白你在说什么延迟,你在读取I2C传感器时插入了延迟?
由于MT_dialog
空白Read_sensor(空白)
{
/ / Read_sensor_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_finish_transfers ();
timer0_general_test (10);//定时器中断延迟
}
*********************************************************************************************************************************
空白timer0_general_user_callback_function(空白)
{
Static uint8_t n = 0;
//当通过10 * 100ms
If (5 == n)
{
n = 0;
uart_init (UART_BAUDRATE_115K2 3);
uart_flow_off ();
uint8_t东西[]= {0 x0a,‘R’,‘e’,‘‘,‘d’,‘y’,0 x0d 0 x0a ' > '};
uart_write ((uint8 *) timeout_expiration 10 NULL);
uart_finish_transfers ();
timeout_expiration——;
/ / printf_string(“\一步!”);
}
n + +;
}
************************************************************************************************************************************
空白timer0_general_test (uint8_t times_seconds)
{
/ / printf_string(“\ n \ r \ n \ r”);
/ / printf_string ("***********************\ n \ r”);
//printf_string("* TIMER0通用测试*\n\r");
/ / printf_string ("***********************\ n \ r”);
//停止进入设置的定时器
timer0_stop ();
timeout_expiration = times_seconds;
//注册SWTIM_IRQn的irq回调函数
timer0_register_callback (timer0_general_user_callback_function);
//启用TIMER0时钟
set_tmr_enable (CLK_PER_REG_TMR_ENABLED);
//设置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);
timer0_set_pwm_low_counter (NO_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
timer0_enable_irq ();
//printf_string("\n\rLED将改变状态每秒钟\n\r");
//printf_string("\n\rTest将运行为:");
/ / printf_byte (timeout_expiration);
/ / printf_string(“秒。\ n \ r”);
/ /开始Timer0
timer0_start ();
/ / printf_string(“\ n \ rTIMER0开始!”);
//等待所需的秒数
而(timeout_expiration);
//禁用TIMER0, TIMER2时钟
set_tmr_enable (CLK_PER_REG_TMR_DISABLED);
/ / printf_string(“\ n \ rTIMER0停! \ n \ r”);
/ / printf_string(“\ n \撕裂测试\ n \ r”);
}
*************************************************************************************************
我已经包含了timer0中断延迟,这个——while (timeout_expiration);——行函数void timer0_general_test(uint8_t times_seconds)使代码无限循环,什么可能的问题,单独的timer0代码工作良好,在DSPS不工作
你可以把这张票注销,我找到答案了,谢谢你的帮助……
嗨prasanth.velliyangiri,
我读了上面的对话,我也在做一些非常相似的事情。但我的工作才刚刚开始。你能帮我完成项目的第一部分,即从传感器读取数据吗?如果你能给我指出我应该看的资料和我需要处理的确切函数,那就太好了。
谢谢。
嗨GauravBansal
我正在使用AN-B-029_V1.0为自定义配置文件读取数据并通过蓝牙发送,这个rar扩展有教程pdf也..,这将对你有帮助
http://support.dialog semiconductor.com/resource/b - 029教程——文件——su..。
嗨prasanth.velliyangiri,
谢谢您的回复。我在sample128上工作,并通过doc AN-B-029开发一个蓝牙智能定制profile_V1.0,如您建议的。这使得移动应用Blueloupe和我的DVK板之间进行了有效的沟通。但我仍然不知道如何将我的电路板集成到任何传感器,也不知道如何通过DSPS应用程序。如果你能给我提供更多关于这方面的文档或指南,我将非常感激。
嗨GauravBansal
我不明白你的问题-如何集成我的板到任何传感器,也通过DSPS应用程序??,
如果你在BLE CLIENT - BLE SERVER中工作,请参考此链接
http://support.dialog-semiconductor.com/iot-server-dsps-hostdata-transmi..。
嗨prasanth.velliyangiri,
我的应用程序是得到温度传感器数据可见的实时在dsps应用程序。那么你认为最合适的医生应该是谁呢?
嗨GauravBansal
UM-B-038 DA14580串口服务参考application_v2.0 -帮助与DSPS