This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好 Vaibhav,
感谢您回来。 我 已经使用了连接到 pga460的 UART 接口 、并且该程序已成功进行调试。 现在,我将接口从 UART 更改为 USART。 然后出现错误。
当我在"thresholdk bulk write " cmd 之后执行"threshold bulk read " cmd 时、读取的数据将移动一个字节。 另一个命令、如"EEPROM 批量写入"和"EEPROM 批量读取"和欧姆。
这是另一个问题、在 pga460的数据表中、USART 是 LSB (8位是 b0、b1、b2、b3、b4、b5、b6、b7)、但在我的系统中、被测试的数据是 MSB (b7、b6、b5、b4、b3、b2、b1、b0)。为什么?
他们如何沟通?
如果通信格式不兼容、为什么我可以从 pga460读取数据?
您好、Jiaao、
您似乎有一个 USART 读取问题。
您说您可以控制 PGA460、这意味着您的写入工作正常、但数据读取似乎不工作。
您能否读取一个具有良好已知值的寄存器并确认您的读取是否正常?
当您说波形不可接受时、您的意思是什么? 您是否尝试使用"通过 USART 直接数据突发"模式?
此致、
维克托。
尊敬的 Viktor:
我想使用 USART 控制 pga460、并尝试使用"通过 USART 直接数据突发"。
我 进行了如下测试:在 USER_DATA 区域设置一个特殊值,写回,0x55 aa 66 99是正确的值,但第一个值0xFF 是错误的值。
代码为:
void Pga460BulkReadEeprom (USART_HandleTypeDef * huart、uint8_t * pData)
{
uint8_t EEP_buff [3]={synctyte、EEBR、calcChecksum (EEBR)};
HAL_USART_Transmit (huart、EEP_buff、3、5);
HAL_USART_Receive (huart、pData、46、5);
}
它是读取信号寄存器的错误返回代码。
uint8_t i=0;
uint8_t Buff1[4]={0x55、0x09};
//偏移:00h~2Bh
对于(i=0;i<0x2C;i++)
{
regAddr = I;
Buff1[2]= regAddr;
Buff1[3]= calcChecksum (9);
HAL_USART_transmit (huart、Buff1、4、5);
HAL_USART_Receive (huart、Buff1、3、5);
*pBuf++=Buff1[1];
}
设置 pga460工作模式也是如此、代码如下所示:
void Pga460SetMode( USART_HandleTypeDef *huart、uint32_t MMode )
{
uint8_t mTmp[5]={synctyte、0x0A、0x4B};
regAddr = 0x4B;
开关(MMode)
{
案例 PGA_DP_DISABLE:
//正常
regData = PGA_DP_DISABLE;
中断;
PGA_DP_LPF 案例:
// LPF 输出
regData = PGA_DP_LPF;
中断;
PGA_DP_整 流器案例:
//整流器输出
regData = PGA_DP_Rectifier;
中断;
PGA_DP_BPF 案例:
// BPF 输出
regData = PGA_DP_BPF;
中断;
PGA_DP_ADC 案例:
// ADC 输出
regData = PGA_DP_ADC;
中断;
默认值:
中断;
}
mTmp[3]= regData;
mTmp[4]= calcChecksum (0x0A);
HAL_USART_transmit (huart、mTmp、5、5);
mTmp[1]= 0x09;
mTmp[2]= 0x4B;
mTmp[3]= calcChecksum (0x09);
HAL_USART_transmit (huart、mTmp、4、5);
HAL_USART_Receive (huart、mTmp、3、5); ---- 返回值不由代码自动执行
}
您好、Jiaao、
需要注意的是、当器件首次上电时、EEPROM 存储器将被读取/加载到易失性影子寄存器存储器空间中。 然后、该器件引用影子寄存器中的值以进行活动操作。 每个读取和写入命令都直接访问影子寄存器空间、而不是 EEPROM 存储器。 仅当您希望将影子寄存器配置直接保存到 EEPROM 时、才需要对 EEPROM 进行编程、以便在下电上电时、这些影子寄存器将保留在 EEPROM 中。 数据表"7.6.1 EEPROM 编程"部分中描述的 EEPROM 编程序列是指 EEPROM 直接更新过程。 在评估期间、每次更改影子寄存器值以使更改生效时、都不需要对 EEPROM 进行编程。
以下是有关 PGA460直接数据突发同步输出模式的一些说明:
同步模式需要使用 TXD、RXD 和 SCLK。 PGA460上没有通常在 SPI 器件上找到的芯片/从器件选择、这就是同步 UART 仅与 SPI 类似的原因。 但是、仍然可以使用 SPI 端口;只需浮动 MCU 的芯片选择即可。 与异步模式不同、同步模式中不需要开始或停止位。 同步传输的数据与异步模式的数据相同、但没有开始/停止/字节间空间位。
例如,发送 Preset 2 Burst + Listen 命令以使用分配了 UART_ADDR=1的 PGA460检测4个对象,您将发送连续计时同步序列{0x55,0x21,0x04,0xFA}, 即(从左到右)同步字段、addr-命令字节(预设2地址‘1’的突发和监听命令)、命令数据字节0 (要检测的对象数为4)和校验和。
以下是使用直接数据突发模式预设2突发和监听命令的 USART 序列示例:
在此示例中,UART_ADDR=0 (默认值),对象数为‘1’,但对象数无关紧要,因为 ADC 输出不提供阈值比较器输出。 只要对象数量有效(1-8个对象)、突发/监听命令将在直接数据模式下执行。
1) 1)主器件以8MHz 时钟速率启动标准同步模式 USART 命令:
PGA460引脚 |
十六进制序列 |
RXD |
{0x55、0x01、0xFD} |
TXD |
在0xFF 处空闲 |
SCLK |
8MHz 工作频率 |
2) 2) 此处是直接数据突发不同于典型突发和监听命令的地方。 在典型的突发/监听命令中、主器件可以停止发送时钟、只需等待记录长度过期、直到读回超声波测量结果。 但是、在同步模式下、主器件会在突发/监听命令之后立即继续发送一个有效的8MHz 时钟。 MOSI 应输出一个空闲高电平值0xFF:
PGA460引脚 |
十六进制序列 |
RXD |
{0xFF…0xFF} |
TXD |
在0xFF 处空闲 |
SCLK |
8MHz 工作频率 |
3) 3) PGA460将不会在 MISO 上返回 ADC 数据、直到从发送突发和/或监听命令开始~120us。
PGA460引脚 |
十六进制序列 |
RXD |
{0xFF…0xFF} |
TXD |
ADC 数据输出 |
SCLK |
8MHz 工作频率 |
4) 4) 持续保持时钟激活并将空闲高电平0xFF 发送到 PGA460的 RXD 引脚非常重要。 但是,对于超过12ms 的预设记录长度,我建议您偶尔发送一个非0xFF,以防止 PGA460的 USART 端口超时。 即 MOSI 每10ms 发送0xC3。 否则、PGA460将在大约~15ms 后停止输出 ADC 数据。
PGA460引脚 |
十六进制序列 |
RXD |
{0xFF…0xFF、0xC3、0xFF…0xFF、0xC3、0xFF} |
TXD |
ADC 数据输出 |
SCLK |
8MHz 工作频率 |
下面是初始 USART 直接数据模式命令序列的特写图、显示 了突发/监听命令和 TXD 输出之间的 ADC 输出延迟。
注意:MOSI = PGA460_RXD、MISO = PGA460_TXD、SCLK = PGA460_SCLK。
8Mbps 时的逻辑位长度是同步模式支持的最大速率。
要将主设备的 SPI 端口配置为同步 UART 模式,PGA460需要:
数据表中将此描述为“在这种模式下,USART 接口充当串行移位寄存器,数据在时钟的上升沿设置,在时钟的下降沿采样。”
要使用 PGA460-Q1 EVM 和 GUI 评估和获取原始 ADC 或 DSP 数据、请执行以下步骤:
1) 1)从树列表中选择数据监视器。
2) 2)单击"Graph"子选项卡。
3) 3)为1MSPS 输出选择图形模式(ADC 或 DSP)。
4) 4)在单击开始之前、从树列表中选择测试模式
5) 5)您可以在"测试模式"树列表的"数据路径采样选择"无线电中将振幅分辨率从8位(默认值)提高到12位。
注:如果您将分辨率保持在8位、那么数字乘法器将确定捕获哪个8位的 ADC/DSP 输出。
6) 6)返回数据监视器、然后单击运行。
7) 7)您可以像导出子选项卡中的回波数据转储数据一样导出图形数据
8) 8)单击 Export Last Data Dump (导出上次数据转储)以将图形数据另存为 txt 或 csv 文件。
注意:当记录长度非常长时、更新图形可能需要几秒钟时间。
尊敬的 Akeem:
感谢您的回复。 通过您的方法、我在评估板上获得了相应的数据、并对原始数据执行了算法评估。
现在、我 正在设计一个使用 pga460的距离测量系统。 因为最大距离为10米、所以 pga460输出的结果不符合要求。 我想从 pga460读取 AFE 数据并分析数据。首先、我选择的 MCU 是 STM32F103、但现在事实证明、该芯片的计算能力可能不够。在 TI 的文献中可以找到使用 tms32f280x 系列+tdc1011的方法。 您能否推荐使用 tms320f28系列 MCU 替代它?