工具与软件:
大家好!
我有一个从设备(MC33772B)、我想通过 SPI 与它进行通信。 这需要一条40位的消息、但不幸的是、我的电路板只能发送16位。
仍然可以通过电路板发送40位吗?或者它不是设计用于此目的吗? 或者我是不是在误会什么东西?
(隔离通信之间有一个 MC33664)
我会非常感谢任何小费。
此致
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.
工具与软件:
大家好!
我有一个从设备(MC33772B)、我想通过 SPI 与它进行通信。 这需要一条40位的消息、但不幸的是、我的电路板只能发送16位。
仍然可以通过电路板发送40位吗?或者它不是设计用于此目的吗? 或者我是不是在误会什么东西?
(隔离通信之间有一个 MC33664)
我会非常感谢任何小费。
此致
您好!
请参阅此主题: LAUNCHXL-F28379D:通过 SPI 从 txt 文件发送24位字- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛
此致、
Aishwarya.
你好:)
如果我在 sysconf 中将数据宽度设置为16、我可以根据需要插入此命令、从而可以在一个芯片选择中发送16位(此处为64位)的倍数:
问题是40不是16的倍数。 这就是我在 sysconf 中将数据宽度设置为8的原因。 但是、我无法再执行 SPI_writeDataNonBlocking (SPIB_BASE、0xAA)。 在示波器上看不到任何数据(芯片选择和时钟可见、但不可见数据)。 为了能够发送8位的倍数、我还需要进行哪些更改、才能更频繁地执行命令?
我的代码:
#include "driverlib.h" #include "device.h" #include "board.h" // // Globals // volatile uint16_t receiveData; volatile uint16_t slaveReady = 0; volatile uint16_t masterReady = 0; volatile uint16_t counter = 1; // // Function Prototypes // __interrupt void spibTxFIFOISR(void); __interrupt void spiaRxFIFOISR(void); // // Main // void main(void) { uint16_t i; // // Initialize device clock and peripherals // Device_init(); // // Disable pin locks and enable internal pullups. // Device_initGPIO(); // // Initialize PIE and clear PIE registers. Disables CPU interrupts. // Interrupt_initModule(); // // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // Interrupt_initVectorTable(); // // Board initialization // Board_init(); // // Enable Global Interrupt (INTM) and realtime interrupt (DBGM) // EINT; ERTM; // // Loop forever. Suspend or place breakpoints to observe the buffers. // while (1) { ; } } // // SPI B Transmit FIFO ISR // __interrupt void spibTxFIFOISR(void) { uint16_t i = 0; // // Send data // while (i < 10000) { i++; } SPI_writeDataNonBlocking(SPIB_BASE, 0xAA); SPI_writeDataNonBlocking(SPIB_BASE, 0xAA); SPI_writeDataNonBlocking(SPIB_BASE, 0xAA); SPI_writeDataNonBlocking(SPIB_BASE, 0xAA); // // Clear interrupt flag and issue ACK // SPI_clearInterruptStatus(SPIB_BASE, SPI_INT_TXFF); Interrupt_clearACKGroup(INT_SPIB_controller_TX_INTERRUPT_ACK_GROUP); } // // Enabled only for SysConfig functionality // __interrupt void INT_SPIB_controller_RX_ISR(void) { // // Issue ACK // Interrupt_clearACKGroup(INT_SPIB_controller_RX_INTERRUPT_ACK_GROUP); } // // End of file //