主题中讨论的其他器件: HALCOGEN
TI 团队、
我在使 MibSPI 正常工作时遇到了一些问题。 我想使用4引脚 MibSPI 1进行通信、即 MOSI、MISO、CLK、ENA。 以下是配置:
- 主器件:
- 主模式:被启用
- 内部时钟:被启用
- 等待启用:已启用
- 传输组0:CS_NONE、长度16
- SOMI[1]:GPIO:输出
- SOMI[0]:SPI:输入
- Simo[1]:GPIO:输出
- Simo[0]:SPI:输出
- CLK:SPI:输出
- ENA:SPI:输入
- 从器件:
- 主模式: 禁用
- 内部时钟:被禁用
- 等待启用:已启用
- 传输组0:CS_NONE、长度16
- SOMI[1]:GPIO:输出
- SOMI[0]:SPI: 输出
- Simo[1]:GPIO:输出
- Simo[0]:SPI: 输入
- CLK:SPI: 输入
- ENA:SPI: 输出
/* USER CODE BEGIN (0) */
/* USER CODE END */
/* Include Files */
#include "HL_sys_common.h"
/* USER CODE BEGIN (1) */
#include "HL_mibspi.h"
#define data_length 16
unsigned long counter1 = 0;
bool transmit_flag = 0;
/* USER CODE END */
/** @fn void main(void)
* @brief Application main function
* @note This function is empty by default.
*
* This function is called after startup.
* The user can use this function to implement the application.
*/
/* USER CODE BEGIN (2) */
/* USER CODE END */
int main(void)
{
/* USER CODE BEGIN (3) */
uint16 tx_data[data_length] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
uint16 rx_data[data_length] = {0};
_enable_IRQ_interrupt_();
mibspiInit();
mibspiEnableGroupNotification(mibspiREG1, 0, 1);
// mibspiEnableLoopback(mibspiREG1, Analog_Lbk);
while(1)
{
if(transmit_flag == 0)
{
mibspiSetData(mibspiREG1, 0, &tx_data[0]);
mibspiTransfer(mibspiREG1, 0);
transmit_flag=1;
}
/* if(mibspiIsTransferComplete (mibspiREG1, 0))
{
transmit_flag=0;
}*/
}
// while(!(mibspiIsTransferComplete (mibspiREG1, 0)));
// mibspiGetData(mibspiREG1, 0, &rx_data[0]);
while(1);
/* USER CODE END */
return 0;
}
/* USER CODE BEGIN (4) */
void mibspiGroupNotification(mibspiBASE_t *mibspi, uint32 group)
{
printf("\n Transfer %d completed!!", counter1);
printf("\n");
counter1++;
transmit_flag = 0;
}
/* USER CODE END */
/* USER CODE BEGIN (0) */
/* USER CODE END */
/* Include Files */
#include "HL_sys_common.h"
/* USER CODE BEGIN (1) */
#include "HL_mibspi.h"
#define data_length 16
unsigned char rx_data[data_length] = {0};
unsigned long counter1 = 0;
bool receive_flag = 1; // this value is initialized to 1 becasue, the SPI transfer function shall only execute when the data is received.
// Hence, the moment any data is received on SPI receive buffer, Group Notification function will execute.
// This will set the flag value to 0 and then the received data will be processed.
/* USER CODE END */
/** @fn void main(void)
* @brief Application main function
* @note This function is empty by default.
*
* This function is called after startup.
* The user can use this function to implement the application.
*/
/* USER CODE BEGIN (2) */
/* USER CODE END */
int main(void)
{
/* USER CODE BEGIN (3) */
_enable_IRQ_interrupt_();
mibspiInit();
mibspiEnableGroupNotification(mibspiREG1, 0, 1);
while(1)
{
// if(receive_flag == 0)
{
mibspiTransfer(mibspiREG1, 0);
// receive_flag = 1;
}
}
/* USER CODE END */
return 0;
}
/* USER CODE BEGIN (4) */
void mibspiGroupNotification(mibspiBASE_t *mibspi, uint32 group)
{
uint16 *data;
data = &rx_data[0];
mibspiGetData(mibspi, group, data);
}
/* USER CODE END */
问题: 无法在从器件上接收数据
查询: 我认为 ENA 引脚的数据传输启用存在一些问题。 如何将与 ENA 相关的程序加入到我的代码中?
此致、
萨梅尔









