从升级到6.0.2 6.0.10

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

你好,
我需要我的端口代码6.0.2到6.0.10版本,因为我现在使用的。我已经上传并成功使用SDK 6.0.2执行在AB硅的代码。现在我需要把它上传到AC AC硅硅片芯片。我能得到任何支持直接升级?

谢谢,
Goutham

设备:
PM_DIALOG.
离线
最后一次露面:16小时52分钟前
职员
加入:2018-02-08 11:03
你好高,

你好高,

没有任何直接的方法来从港口到SDK6.0.2 SDK6.0.10版本的应用程序,因为SDK6.0.2仅供DA14585 AB硅芯片,它具有从AC硅芯片不同的ROM代码。虽然你可以使用SDK6.0.10在DA14585 AC硅芯片和端口的应用程序代码从一开始。

谢谢,PM_DIALOG.

goutham
离线
最后一次露面:2年5个月前
加入:2017-08-10说
嗨,团队,

嗨,团队,

其实我已经上传了一个BLE传感器代码到使用6.0.2 SDK的AB硅片(DA14585)的电路板上。我得到了输出。Now I am trying to execute the same code in AC silicon chip using SDK 6.0.10 where I am not able to get the desired output. I have made changes from the beginning as you said.Is there any additional method to do while upgrading to latest SDK?

谢谢,
Goutham

PM_DIALOG.
离线
最后一次露面:16小时52分钟前
职员
加入:2018-02-08 11:03
你好高,

你好高,

没有任何其他方法可以将应用程序代码移植到最新的SDK。由于您将来自SDK5.0.2的代码片段添加到最新的SDK中,您无法得到想要的结果,或者您的应用程序无法工作/编译?

谢谢,PM_DIALOG.

goutham
离线
最后一次露面:2年5个月前
加入:2017-08-10说
我已经添加了代码

你好,

我们将交流硅芯片和传感器集成在一起,开发了一种原型板。我已经使用6.0.10 SDK运行了一个i2csensor代码到这块板。当我只运行i2c传感器代码时(从外设示例),它提供传感器数据,但如果我在ble堆栈中调用相同的i2c传感器代码,编译器将在wait_until_i2cready (ble不是广告)中的i2c_readbyte受到攻击。如果我上传单独的ble_app_periphery代码到板上,我们可以使用一个通用的BLE应用程序读取ADC默认值。所以,这是硬件问题还是堆栈中的任何更改?

谢谢,
高。N

PM_DIALOG.
离线
最后一次露面:16小时52分钟前
职员
加入:2018-02-08 11:03
你好高,

你好高,

强烈建议不要修改BLE Stack,因此应该从中删除i2c传感器代码,因为传感器延迟了BLE活动。您应该将代码添加到应用程序级别。如果我从你提到的理解正确,你的项目正确工作,如果你不添加您的代码片段到ble堆栈,这是可预期的。这不是一个硬件相关的问题,然后设备停止发布,因为您修改了BLE堆栈。另外,您能解释一下BLE堆栈是什么意思吗?请注意BLE堆栈位于ROM代码中,您无法访问它。

谢谢,PM_DIALOG.

goutham
离线
最后一次露面:2年5个月前
加入:2017-08-10说
你好对话框,

你好对话框,
BLE堆叠装置我们通过调用i2c_sensor(初始化和读取传感器芯片ID)改变ble_app_peripheral代码和也我们创建了一个新的配置文件和特性。

在ble_app_peripheral示例中,我们以以下方式更改了一些库
1。
在user_periph_setup.h:
//添加
的#define I2C_SLAVE_ADDRESS 0x6B //设置从属设备地址
的#define I2C_SPEED_MODE I2C_FAST //速度模式:I2C_STANDARD(100千位/秒),I2C_FAST(400千位/秒)
#define I2C_ADDRESS_MODE I2C_7BIT_ADDR //寻址方式:{I2C_7BIT_ADDR, I2C_10BIT_ADDR}
的#define I2C_ADDRESS_SIZE I2C_1BYTE_ADDR //地址宽度{I2C_1BYTE_ADDR,I2C_2BYTES_ADDR,I2C_3BYTES_ADDR}

//选择I2C设置
#定义I2C_GPIO_PORT GPIO_PORT_0
#定义I2C_SCL_PIN GPIO_PIN_2
#定义I2C_SDA_PIN GPIO_PIN_3

2.在user_periph_setup.C:

//添加
SetWord16 (CLK_AMBA_REG 0 x00);//设置时钟(hclk和pclk
SetWord16(SET_FREEZE_REG,FRZ_WDOG);//停止看门狗
SetBits16(SYS_CTRL_REG,PAD_LATCH_EN,1);//开放垫
SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 1);/ /打开调试器
/ / SetBits16 (PMU_CTRL_REG PERIPH_SLEEP 0);//退出外部电源
uint8_t byte_ID;
i2c_eeprom_init(I2C_SLAVE_ADDRESS,I2C_SPEED_MODE,I2C_ADDRESS_MODE,I2C_ADDRESS_SIZE);// initilizing传感器
i2c_eeprom_read_byte (0 x0f &byte_ID);//读取传感器芯片ID。
SetWord16 (RESET_FREEZE_REG FRZ_WDOG);//开始看门狗

3.
在user_custs1_def.h:创建一个自定义的服务和特色

//自定义服务器的服务4 1
的#define DEF_SVC4_UUID_128 {0x00时,0x2A,0x93,0xA6,0xBD,0xD8,×41,0×52,0xAC,0x0B中,为0x10,0x99,0x2E之间,0xC6,0xFE的,0xED} //加

的#define DEF_SVC1_LSM_ACC_X_UUID_128 {0×01,0x2A,0x93,0xA6,0xBD,0xD8,×41,0×52,0xAC,0x0B中,为0x10,0x99,0x2E之间,0xC6,0xFE的,0xED} //加

的#define DEF_SVC1_LSM_ACC_X_CHAR_LEN 100 //加

#define DEF_SVC1_ACC_X_USER_DESC "Sensor" //ACC

然后,在下列图书馆分别执行创建海关服务和特色的步骤:
user_custs1_def.c //实现海关服务和特色数据库
User_cust1_impl.h //定义处理程序和回调计时器
user_cust1_impl.c //处理程序和回调计时器描述
为我们的自定义特性创建控制点写命令。

如果我评论i2c_eeprom_read_byte(为0x0F,与byte_ID);在user_periph_setup.C功能,我们的原型板是广告,我们能够连接到能够看到创建的自定义服务和特性的通用BLE应用。我们也能够读取和写入到创建的自定义特性。

但是如果调用i2c_eeprom_read_byte(0x0F,&byte_ID);在user_peripheral _setup. c中,原型不是广告,控制器在以下函数中被击中
i2c_error_code i2c_wait_until_eeprom_ready(无效)

uint16_t tx_abrt_source;

//检查是否接收到ACK
For (uint32_t I = 0;我< I2C_MAX_RETRIES;我+ +)

SEND_I2C_COMMAND(0×08);//做一个空访问
WAIT_UNTIL_I2C_FIFO_IS_EMPTY ();//等待直到Tx FIFO为空
WAIT_UNTIL_NO_MASTER_ACTIVITY ();//等待直到没有主活动
tx_abrt_source = GetWord16 (I2C_TX_ABRT_SOURCE_REG);//读取I2C_TX_ABRT_SOURCE_REG寄存器
GetWord16 (I2C_CLR_TX_ABRT_REG);//清除I2C_TX_ABRT_SOURCE寄存器
if (((tx_abt_source & abt_7b_addr_noack) == 0) / /输出

返回I2C_NO_ERROR;


返回I2C_7B_ADDR_NOACK_ERROR;

我们还已经尝试通过创建传感器库(sensor_id.c)和限定所述功能为:
空隙i2c_test(无效)

uint8_t byte_ID;
// I2C EEPROM初始化I2C接口
i2c_eeprom_init(0x6B,I2C_SPEED_MODE,I2C_ADDRESS_MODE,I2C_ADDRESS_SIZE);
test_read_byte (0 x0f &byte_ID);

然后,我们称为内部user_periph_setup.C的i2c_test功能,还是一样的事情是happned。

我们在只有I2C例如相同的处理test_read_byte(为0x0F,与byte_ID),我们能够读取传感器芯片ID。

请告诉我们如何解决这个问题?

我们的主要目的是通过读I2C传感器数据和广播经由BLE相同的数据。我们与485子板(AB硅和使用SDDK 6.0.2)和传感器接口板,这是完全的工作进行这对亲开发板。之后,只有我们采取这原型开发。

谢谢
高。N

PM_DIALOG.
离线
最后一次露面:16小时52分钟前
职员
加入:2018-02-08 11:03
你好高,

你好高,

强烈建议不到位传感器代码为user_periph_setup.c功能,因为该交易延迟系统。能否请你跑你的代码调试代码,并试图找到其中的代码被卡住?大概设备停止广告由于看门狗到期。我强烈建议您将传感器的代码片段user_peripheral.c文件。

谢谢,PM_DIALOG.

goutham
离线
最后一次露面:2年5个月前
加入:2017-08-10说
你好PM_Dialog,

你好PM_Dialog,
我们在调试模式下运行代码,代码卡在下面的函数中
i2c_error_code i2c_wait_until_eeprom_ready(无效)

uint16_t tx_abrt_source;

//检查是否接收到ACK
For (uint32_t I = 0;我< I2C_MAX_RETRIES;我+ +)

SEND_I2C_COMMAND(0×08);//做一个空访问
WAIT_UNTIL_I2C_FIFO_IS_EMPTY ();//等待,直到Tx FIFO是空*******这里的控制器被卡住
WAIT_UNTIL_NO_MASTER_ACTIVITY ();//等待直到没有主活动
tx_abrt_source = GetWord16 (I2C_TX_ABRT_SOURCE_REG);//读取I2C_TX_ABRT_SOURCE_REG寄存器
GetWord16 (I2C_CLR_TX_ABRT_REG);//清除I2C_TX_ABRT_SOURCE寄存器
if (((tx_abt_source & abt_7b_addr_noack) == 0) / /输出

返回I2C_NO_ERROR;


返回I2C_7B_ADDR_NOACK_ERROR;

我们还通过调用传感器代码片段在user_peripheral.c运行代码仍然没有改善。同样的问题repeates代码卡在上面的函数在WAIT_UNTIL_I2C_FIFO_IS_EMPTY()。

但是,如果我们运行的是越来越执行上述功能的唯一i2c_sensor代码,我们已经运行在调试模式下i2c_sensor代码控制器执行我们每次调用代码片段的时间上面的功能。
请告诉我们,任何其他方法,可以得到执行。

谢谢
Goutham

PM_DIALOG.
离线
最后一次露面:16小时52分钟前
职员
加入:2018-02-08 11:03
你好高,

你好高,

您正在使用的I2C驱动程序和函数是用于连接eeprom内存,实现是通过发送0x08轮询内存(如果内存准备操作),并等待来自另一端的ACK。因此,WAIT_UNTIL_I2C_FIFO_IS_EMPTY()被调用,以检查TX FIFO是否为空,因为之前您已经放置了一个字节到缓冲区以传输数据。我假设不是WAIT_UNTIL_I2C_FIFO_IS_EMPTY()设备仍然卡住,而是没有从另一边响应的事实,所以驱动程序继续发送0x08字节,直到它从另一边的设备得到一个ACK。除非有什么东西保持线路繁忙,所以hw模块不会发送任何数据,所以FIFO它保持至少一个字节。你能在没有BLE活动的情况下测试传感器代码吗?您是否尝试探测I2C线路以检查正在发送或接收的内容?

谢谢,PM_DIALOG.