⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
12个帖子/ 0新
最后一篇
ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
make

如何在无附带方面发出新的AT命令以改变BLE UART的波特率。

关键词:
设备:
PM_DIALOG.
离线
最后一次露面:40分钟19秒前
职员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

无附加方案参考应用程序代码开发了快速评估或执行一些基本的BLE功能,而无需在代码中潜入。您需要实现的是可实现的,但您需要自己做一些工作并调试一些用户应用程序功能。查看user_codeless.c中的函数void user_execute_commands(char * cmd)。此函数在命令中占用一串分号,并逐个执行它们。将user_app_cmd_receveed发送到内核。然后,请检查处理user_app_cmd_received消息的user_catch_rest_hndl()。您的自定义AT命令应添加到AT_COMMAND_CHARACTIONS_T跳转表中。请按照USE_AT_ADVSTART宏,该宏负责启动广告。此外,您应该注意如何通过Perip_init()函数中的波特率。

谢谢,PM_DIALOG.

ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
我发了一个命令,+波特= 0。

我发了一个命令,+波特= 0。现在它所都是返回OK。我正在努力弄清楚将波特率传递成Perip_init的最佳方式()你如何建议我这件事?

PM_DIALOG.
离线
最后一次露面:40分钟19秒前
职员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

请查看Periph_init()函数,您将看到UART2以57600波特率最终确定。一旦您发送适当的AT命令,您应该将波特率保持为变量并将其传递在UART2_INIT()中。

谢谢,PM_DIALOG.

ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
现在我有这一点

现在我在user_at_commands.c中拥有这一点代码,将波特率更改为115200。

#ifdef使用_at_baud.
void user_at_baud(struct at_cmd_params_t * arg,char * reply_string)
{
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 3){
UART2_INIT(UART_BAUDRATE_115K2,UART_CHARFORMAT_8);
arg-> success_flag = true;
}

}

#万一

然而,这冻结了终端。当我将终端的波特率设置更改为115200时,它仍然冻结。

PM_DIALOG.
离线
最后一次露面:40分钟19秒前
职员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

您能分享如何用自定义AT_Command_Characteristics_t跳转表与您的Custom AT命令分享如何?语法的描述如下所示:

  • AT命令ID索引
  • AT命令标记字符串
  • AT命令标记长度
  • 在命令回调,实现功能
  • 最小争论数量
  • 最大参数数
  • 最大回复大小字符串

由于您发送AT + BAUK = 0命令,请您在调试模式下运行它,以澄清user_at_baud()触发回调函数吗?

谢谢,PM_DIALOG.

ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
我添加了以下代码

我将以下代码添加到跳转表中。

#ifdef使用_at_baud.

{at_baud,“baud”,4,user_at_baud,1,11,Rply_max_size},

#万一

如果我将void user_at_random()中的代码放入我的void user_at_baud()并使用AT命令AT + BAUK = 3我会获得随机数,因为我期望的。

ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
如果我将此添加到我的user_at中

如果我将此添加到我的user_at_baud()funtion,它不会改变波特率,但在57k6保持终端也会冻结。

uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 3){
UART2_INIT(UART_BAUDRATE_57K6,UART_CHARFORMAT_8);
arg-> success_flag = true;

我还没有连接调试器,我在等我的IT部门连接右驱动程序。现在与J3的连接只充当电源。我的P0_4连接到RX和P0_5到TX和J4引脚2连接到COM端口的地面。这可能是这个问题吗?

ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
所以我正在改变波特

因此,我正在正确改变波特率,但是,当我更改波特率时,键盘无法在终端内键入终端。通过LightBlue应用程序,我仍然可以在更改波特率后键入PIPE命令时键入命令。如果我键入ATR,例如终端没有通过OK响应,我希望能够读取终端和手机连接的响应。此外,我也想解决无法键入键盘到终端改变波特率后。

PM_DIALOG.
离线
最后一次露面:40分钟19秒前
职员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

为延迟道歉。由于波特率发生了变化,因此我认为来自串行终端的波特率也应该改变。

谢谢,PM_DIALOG.

ANT777222
离线
最后一次露面:3个月3周前
加入:2019-07-11 17:03
我正在改变波特率

我正在改变终端的波特率。添加user_charachter_parser_start()解决了问题。

void user_at_baud(struct at_cmd_params_t * arg,char * reply_string)
{
uint8_t index = ahtoi(&arg-> cmd_buffer [arg-> arg_index [0]]);
if(index == 5){
UART2_INIT(UART_BAUDRATE_38K4,UART_CHARFORMAT_8);
user_charachter_parser_start();
arg-> success_flag = true;
}

PM_DIALOG.
离线
最后一次露面:40分钟19秒前
职员
加入:2018-02-08 11:03
嗨Ant777222,

嗨Ant777222,

很高兴你识上你的问题,非常感谢你的迹象。

谢谢,PM_DIALOG.