主题中讨论的其他器件:CC253
您好!
我正在处理 SPI、其中我的 CC253是主器件、并且连接了2个从器件(ADE7953能源监控和 M95M01 EEPROM)。
如果我单独将能量监控从设备连接到 SPI、则效果完美、如果我单独连接 EEPROM 从设备、则效果同样理想。
如果我使用不同的从器件选择引脚在同一 SPI 总线上连接两个从器件、我很难解决这个问题。 在这种情况下、我能够从一个从器件读取数据、即能量监控、但数据无法从 EEPROM 读取。
#define HAL_CONFIG_IO_INPUT (端口、引脚) HAL_CONFIG_IO_INPUT_PREP (端口、引脚)
#define HAL_CONFIG_IO_INPUT_PREP (PORT、Pin) st (P#port#SEL &&~BV (Pin);\
P#port#DIR &=~BV (引脚);\
P#port#INP &=~BV (引脚);)
//以下是实际的 SPI 初始化
PERCFG |= 0x02;
/*配置 clk、master out 和 master in 行*/
HAL_CONFIG_IO_Peripheral (HAL_M95M01_SPI_PORT、HAL_ADE7953_MOSI_PIN);
HAL_CONFIG_IO_Peripheral (HAL_M95M01_SPI_PORT、HAL_ADE7953_MIO_PIN);
HAL_CONFIG_IO_Peripheral (HAL_M95M01_SPI_PORT、HAL_ADE7953_SCK_PIN);
/*将 SPI 速度设置为1MHz (这些值假设系统时钟为32MHz)
*在板上确认这会导致1MHz SPI 时钟。
*
BAUD_Exponent = 11;//使用波特率为11、5200
BAUD_尾 数= 216;//需要检查计算结果
/*配置 SPI */
U1UCR = 0x80;/*刷新并进入空闲状态。 8-N-1。 *
U1CSR = 0x00;/* SPI 模式、主器件。 *
U1GCR = HAL_ADE7953_SPI_TRANSIT_MSB_FIRST | HAL_ADE7953_SPI_CLOCK _PHA_0 | HAL_ADE7953_SPI_CLOCK _POL_LO | BAUD_指数;
U1BAUD = BAUD_尾 数;
P2SEL &=~0x20;//将优先级分配给 SPI
U1CSR |= 0x40;//仅在 SPI 初始化后启用 RX