工具与软件:
我想使用2个 TMS570LS1224卡来传递数据。 首先、我从键盘发送的数字将通过 i2c 通信到达第一个卡。 然后、数据将通过 UART 通信从第一个卡传输到第二个卡。 然后、第二个卡上的 LED 将根据我发送的数字亮起。 (例如、当我从键盘发送数字1时、LED 指示灯将亮起、当我发送其他数字时、LED 指示灯将熄灭)。
/**@文件 sys_main.c
*@简要应用程序主文件
*@日期2018年12月11日
*@版本04.07.01
*
*此文件包含一个空的 main 函数,
*可用于应用程序。
*/
/*
*版权所有(C) 2009-2018德州仪器(TI)公司- www.ti.com
*
*
*以源代码和二进制形式重新分发和使用,无论有无
*修改,只要满足以下条件即可
*已满足:
*
*源代码的再分发必须保留上述版权
*通知,本条件列表及以下免责声明。
*
*二进制形式的再分发必须复制上述版权
*通知,本条件列表和以下免责声明在
*随附的文档和/或其他材料
*分发。
*
*既不是德州仪器(TI)公司的名称、也不是公司的名称
*其贡献者可用于认可或推广衍生产品
*未经事先书面许可使用本软件。
*
*本软件由版权所有者和贡献者提供
"按现状"和"按可得到"的基础提供
本站明确声明不作出任何种类的所有明示或暗示的保证
*不得使用特定目的。 在任何情况下均不得享有版权
*所有者或贡献者对任何直接的、间接的、附带的、
*特殊、示例性或后果性损害(包括但不包括
*仅限于采购替代商品或服务;不能使用,
*数据,或利润;或业务中断)然而造成和任何
*责任理论,无论是合同,严格的责任,或侵权
*(包括疏忽或其他)以任何方式产生的使用
*本软件,即使被告知此类损坏的可能性。
*
*/
/*用户代码 begin (0)*/
#include "sci.h"
#include "i2c.h"
#include
/*用户代码结束*/
/*包含文件*/
#include "sys_common.h"
/*用户代码 begin (1)*/
/*用户代码结束*/
/**@fn void main (void)
*@简要应用程序主函数
*@注意此函数默认为空。
*
*此函数在启动后调用。
*用户可以使用此函数来实现应用程序。
*/
/*用户代码 begin (2)*/
#define DATA_COUNT 10.
#define Slave_Address 0x20
uint8_t received_value = 0;
/*用户代码结束*/
int main (void)
{
/*用户代码 begin (3)*/
_enable_irq();
i2cInit ();
sciInit();
Int sayi;
i2cSetOwnAdd (i2cREG1、Slave_Address);
i2cEnableNotification (i2cREG1、I2C_RX_INT);
while (1){
printf ("Bir sayi jirin:");
scanf ("%d"、&sayi);// Kullanıcıdan bir tamsayı alır
printf ("Girdiginiz sayi:%d\n"、sayi);
// klavyeden alınan değeri birinci karta gönder
i2cSetDirection (i2cREG1、I2C_transmitter);
i2cSetSlaveAdd (i2cREG1、Slave_Address);
i2cSetCount (i2cREG1、sizeof (sayi));
i2cMasterTransmit (i2cREG1、Slave_Address、(uint8_t*)&sayi、sizeof (sayi)、true);
// i2c devam ederken burda bekle
while (i2cIsBusBusBusy (i2cREG1));
printf ("I2C ile veri gönderildi:%d\n"、sayi);
// burada da i2c üzerinden değeri alıyoruz
i2cSetDirection (i2cREG1、I2C_RECEIVER);
i2cSetCount (i2cREG1、DATA_COUNT);
}
/*用户代码结束*/
返回0;
}
/*用户代码 begin (4)*/
void i2cNotification (i2cbase_t * i2c、Uint32标志){
if (FLAGS & I2C_RX_INT){
i2cReceivive (i2cREG1、sizeof (receive_value)、&receive_value);
while (i2cIsBusBusy (i2cREG1)= true);
while (i2cIsStopDetected (i2cREG1)= 0);// burda stop gelene kadar bekliyoruz
i2cClearSCD(i2cREG1);// Burada ise stop durumunu temizliyoruz。
printf ("%d\n"、received_value);
sciSend (scilinREG、sizeof (receive_value)、&receive_value);
printf ("接收:%d\n"、接收_值);
}
}
/*用户代码结束*/