您好!
我们使用 Holt HI-35850器件电路板和 TMS320F28335进行 SPI 通信、
现在我尝试在 HI-35850中使用标号过滤器、
1.我们提供 LabelArray 作为标签查找
UNS16 LabelArray[32]=
{//[0] [1] [3 ] [ 1] [4] [5] [6][7]
//000-007 008-015 016-023 024-031 032-039 040-047 048-055 056-063
0x0000、 0x0000、0x0000、0x0000、0x0000、 0x0000、0x0000、0x0000
//[8] [9] [10] [11][12][13][14][15]
//064-071 072-079 080-087 088-095 096-103 104-111 113-119 120-127
0x0000、 0x0000、0x0000、0x0000、0x0000、 0x0000、0x0000、0x0000
//[16] [17] [ 18] [19] [20] [21] [ 22] [ 23]
//128-135 136-143 140-151 152-159 160-167 168-175 176-183 184-191
0x0000、 0x0000、0x0000、0x0000、0x0000、 0x0000、0x0000、0x0000
//[24] [25] [26] [27] [ 28] [29][30][31]
//192-199 200-207 208-215 216-223 224-231 232-239 240-247 248-255
0x0100、 0x0000、0x0000、0x0000、0x0000、 0x0000、0x0000、0x0000
};
//C0表示六边形、192表示十进制
2.当我们需要配置控制寄存器时,
(在此配置之前、我们将通过提供"01"操作码进行主复位)
Mcu1_Mcu2_CsLow() Spi_Mcu;
/*写入字节1控制寄存器操作码进行配置*/
Mcu1_Mcu1_Mcu1 Spi_Write (0x1000);
/*用于配置的控制字字节2 */
Mcu1_Mcu1 (0x2000);Spi_Write (0x2000);
/*用于配置的控制字字节3 */
Spi_Write (0x2400);
/*从 MCU2读取虚拟字节1以获得控制字*/
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
/*从 MCU2读取虚拟字节2以获得控制字*/
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
/*从 MCU2读取虚拟字节3以获得控制字*/
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
/*禁用 MCU2 CS 线路*/
Spi_Mcu 2_CsHigh ();
我们使用"10"操作码来写入控制寄存器。 然后、我们将使用 CR5、CR13控制寄存器、
我还添加了 CR2、因为我需要标签识别功能。 因此、我们将提供控制字、即(0x2000)、(0x2400)
3.由于我们需要使用操作码"06"操作码将我的 LabelArray 复制到 Holt 存储器,因此我将这样进行配置。
Mcu1_Mcu2_CsLow() Spi_Mcu;
/*标签的传输操作码*/
Mcu1_Mcu1_Mcu1 (0x0600);Spi_Write (0x0600);
/*为数据字段地址读取虚拟字节*/
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
/*用于将标签阵列复制到 Holt 存储器的循环*/
for (label_index=31;label_index>=0;label_index-)
{
Mcu1_LabelArray[label_index] Spi_Write);
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
}
/*禁用 MCU2 CS 线路*/
Spi_Mcu 2_CsHigh ();
4.我们需要使用操作码"0D"读取标签查找存储器
Mcu1_Mcu2_CsLow() Spi_Mcu;
/*读取标签的操作码*/
Mcu1_Mcu1_D00 (Spi_Write);
/*为数据字段地址读取虚拟字节*/
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
/*循环执行虚拟读取*/
for (label_index1=31;label_index1>=0;label_index1--)
{
Mcu1_Mcu1_Mcu1 Spi_Write (0x0000);
READ_CONFIG_DUMP_MCU2 = Mcu1_Mcu1_Mcu1 Spi_Read ();
}
/*禁用 DSC CS 线路*/
Spi_Mcu 2_CsHigh ();
我们将传输0xE01111C0、这里我想检查标签是否为 C0、然后只读取。
由于 C0是十六进制值、它的十进制值是192、因此 AM 设置了192位
199 198 196 195 194 192
0 0 0 0 0 0 0 0 1 =(0x01)
我启用了像这样的192位、并在索引[24]中给出、因为我只需要这个标签。
当我们以这种格式进行尝试时、我无法接收数据。
我还尝试使用操作码"0B"读取控制寄存器
请指导我进行标签筛选。
谢谢。此致、
查亚