您好
我有几个问题想请教
TI_prime_phy_example 这个 project 运作在TMDSPLCKIT v3的展示目的为持续传送封包
我试著去抓出每个封包所传送的内容,根据
这份文件内容,传输的数据封包应储存在void cb_ppdu(PHY_ev_t ev, PHY_cbData_t *data_p) 这function内
原始Code如下
void cb_ppdu(PHY_ev_t ev, PHY_cbData_t *data_p)
{
if (data_p->status == PHY_STAT_SUCCESS)
{
/* ok to read data */
rxppdu_cnt++;
printf("now the rxppdu_cnt = %d\n", rxppdu_cnt);
printf("receive data Length = %d\n", ((PHY_rxPpdu_t *)(data_p->cbParms.rxPpdu.ppduInfoAddr))->length);
printf("–Data–\n");
for(j = 0; j < ((PHY_rxPpdu_t *)(data_p->cbParms.rxPpdu.ppduInfoAddr))->length; j++)
{
array = ((PHY_rxPpdu_t *)(data_p->cbParms.rxPpdu.ppduInfoAddr))->data_p;
printf("%d\n", array[j]);
}
printf("–End of Data–\n");
printf("flash led\n\n\n");
/* release */
PHY_rxPpduRelease((PHY_rxPpdu_t *)(data_p->cbParms.rxPpdu.ppduInfoAddr));
/* flash led every 8 pkt for testing */
if ((rxppdu_cnt & 0x7) == 0)
GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1; rxppdu_done = 1;
}
}
为了抓取内部资料将他显示出来,上方红色程式码为我多加的部分。
而传送的封包内容部分原始码如下
/* Initialize TX PPDU data buffer */
PHY_tx_ppdu_s.length = PHY_TX_TEST_DEFAULT_PPDU_LEN;
PHY_tx_ppdu_s.level = PHY_TX_TEST_DEFAULT_LEVEL;
PHY_tx_ppdu_s.mcs = PHY_TX_TEST_DEFAULT_MOD;
PHY_tx_ppdu_s.txTime = PHY_TX_TEST_DEFAULT_TIME;
PHY_tx_ppdu_s.ppduHdr_p = (Uint16 *)&hdrBuf[0];
PHY_tx_ppdu_s.ppduPld_p = (Uint16 *)&ppduBuf[0];
/* Fill the ppduBuf with ramp data*/
buf_p = (Uint16 *)ppduBuf;
for (idx = 0; idx < PHY_TX_TEST_BUF_SIZE; idx++)
{
*buf_p++ = 1 ;
}
buf_p = (Uint16 *)hdrBuf;
for (i = 0; i < PHY_TX_TEST_HDR_SIZE; i++)
{
*buf_p++ = i;
}
问题点在于为何我所接收到的封包内容与我初始设定的封包内容不同
在这份CODE中#define PHY_TX_TEST_DEFAULT_PPDU_LEN 40
Payload长度为40,Header长度为4,但所接收到的封包长度却为((PHY_rxPpdu_t *)(data_p->cbParms.rxPpdu.ppduInfoAddr))->length 为47 请问另外3是哪里多出来的?
并且我所传输的内容皆为1~n,但所接收到的内容却皆为每个数字皆乘上256请问这是什么缘故?
以下节图为我compile过后console所显示的内容
其中最前面的0 1 2 3 四个数字是我的header
但是到了第28个数字却又开始出现乱码,有人有好的意见吗?
第二个问题
有没有任何其他办法 可以将传送的封包还有所接收到的封包传送到电脑端,使人方便看出所传送的资料。谢谢