您好,支持人员,
我一直在努力熟悉生产线工具板和相关软件。我能够成功地执行射频测试,并完成我的DA14580设计(使用村田型ZY模块)所需的所有编程。当电路在生产线上时,我需要合并一个单元自检,通过阅读UM-B-041,我在第29页看到了客户测试命令ID描述。描述中说:“在固件中有一个功能,客户可以添加自己的代码来处理他们喜欢的数据。”
我已经查看了prod\u测试项目的代码,但是还不能确定我可以在哪里添加自己的测试代码。我想做的是依次切换3个gpio引脚并执行i2c事务。在测试/编程过程中,这是正确的位置吗?我应该从哪里开始寻找实现此功能的方法?
A related question is should I be using the prod_test code from SDK3 or SDK 5? My design uses SDK5, but I saw a post recommending the use of the SDK3 version. Any advice you could provide related to these issues would be greatly appreciated, Thanks.
设备:
你好,戴夫。伦佐
回答问题1:
>检查PLT源代码中文件“host\u hci.c”中的函数“hci\u custom\u action”。
//如果用于DA1458X芯片,则相应的hci命令为“01 D0 40 01 01(param\u data)。操作码为0x40D0
>检查SDK中“customer\u prod.c”文件中的函数“hci\u custom\u action\u cmd”
//在内部添加客户代码。现在,默认代码只返回事件。
对问题2的回答:
Regarding as prod_test code, recommend for SDK3 if you do not intend to make any change.
但对于SDK5,据我所知,在射频接收测试中可能会出现异常结果。例如,错误率可能超过100%。当然,这是与代码计算部分有关的错误。
the fix is as follows:
在文件\5.0.3\projects\target\u apps\prod\u test\prod\u test\src\custom\u gtl\u hci.c中
结构hci\u ccevt*gtl\u hci\u tx\u evt\u func(uint8\u t*长度)
{
......
案例LLM\u LE\u TEST\u END\u CMP\u EVT:
操作码= HCI_LE_TEST_END_CMD_OPCODE;
param_len += HCI_CCEVT_LETSTEND_RETPAR_LEN;
//添加开始*******************
struct llm\u test\u end\u cmd\u complete*s=(struct llm\u test\u end\u cmd\u complete*)(gtl\u env.p\u msg\u tx->param);
co_write16p(&(p_evt->param[1]),co_htobs(s->nb_packet_received));
//添加结束*************************
中断;
我有一些自定义代码running but now the production line tool gui is reporting that the custom test is failing. I am setting a gpio high, looping nop's for approximately 2 seconds then setting the gpio low. The remainder of the function is untouched so I am confused as to why it is now reporting failure.
我想能够顺序切换3个GPIO引脚在半秒的间隔。最好的方法是什么?我可以使用简易计时器api吗?再次感谢您的帮助,非常感谢。
我现在使用的是pwm定时器而不是easy timer api,但遇到了一些问题。我可以打开gpios,但似乎不能关闭。有没有想过是什么原因造成的?
嗨,戴夫.
You mentioned that PWM does not work ?
此外,任何耗时的代码都不建议添加“hci\u custom\u action\u cmd”函数,因为PC工具的软件中存在超时检查,正在等待返回事件。
You can set a flag, then do the workload in the main function, or use the timer callback function.
PWM计时器似乎确实在工作,但如果我尝试执行以下操作:
1) 打开GPIO
2) 等待1秒钟
3) 关闭GPIO
4) 等待1秒钟
gpio将变高,2秒后软件将报告故障。对于实际的测试序列,我想切换GPIO的时间为20ms-30ms。至于在main函数中设置标志和执行测试代码,我应该在main函数中的什么位置执行此操作?
嗨,戴夫
您只能在此处添加以供测试。
int main函数(void)
{
...............
/*
************************************************************************************
*主回路
************************************************************************************
*/
while(1)
{
#if HAS_TOGGLE_GPIO
cust_gpio_fsm();
#结束
......
嗨,对话,
我试图添加下面的代码,在SDK5中使用XTAL-trim进行我的自定义测试,但是我仍然在板上收到XTAL-trim-fail消息,我知道在标准的未修改产品上传递它_测试.bin
//添加开始*******************
struct llm\u test\u end\u cmd\u complete*s=(struct llm\u test\u end\u cmd\u complete*)(gtl\u env.p\u msg\u tx->param);
co_write16p(&(p_evt->param[1]),co_htobs(s->nb_packet_received));
//添加结束*************************
从日志中:
|17:07:06.476 | DUT | PDLL | XTAL | TRIM | INIT |启动| XTAL TRIM操作初始化。
|17:07:06.477 | DUT | PDLL | XTAL | TRIM | START | XTAL TRIM操作开始。
|17:07:36.478 | DUT | PDLL | RX |超时|错误|设备未回复PDLL消息请求。当前设备状态=[12]。
|17:07:36.479 | DUT | PDLL | XTAL | TRIM |失败| XTAL TRIM失败。当前设备状态=[12]。
SDK5还有什么我需要更改的吗?
Best wishes,
托马斯
Hi thomasburton,
您添加的代码是针对一个应用于5.0.3上引入的bug的修复,该bug与CBT tester的测试相关,您在5.0.4的prod\u测试项目上实现的修复没有任何用处,也没有任何用处来应用自定义测试。
谢谢你的对话