我们如何通过 I2C 将数据发送到 SRAM?
根据手册,
编译工具(Lasm.exe)将生成十六进制文件
然后、将 hex 文件复制到数组表中
通过以下编码将数据上传到 SRAM。
void load_sam()
{
int i、j;
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x40);//器件全局设置
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x2F);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x48);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x02);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x54);//发送寄存器数据
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x32);//将十六进制加载到 U1中的 SRAM
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4b);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x09);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4c);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x78);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4d);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0xa8);//发送寄存器数据
for (j=0;j<16;j++)
{
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4F);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_base、j);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x50);//发送寄存器地址
for (i=0;i<32;i++)
MAP_I2C_masterSendMultiByteNext (eUSCI_B1_base、table_32[i+j*32]);//发送寄存器数据
}
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x33);//将十六进制加载到 U2中的 SRAM
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4b);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x09);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4c);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x7B);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4d);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0xAA);//发送寄存器数据
for (j=0;j<16;j++)
{
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4F);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_base、j);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x50);//发送寄存器地址
for (i=0;i<32;i++)
MAP_I2C_masterSendMultiByteNext (EUSCI_B1_BASE、Table_33[i+j*32]);//发送寄存器数据
}
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x34);//在 U3中将十六进制加载到 SRAM
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4b);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x09);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4c);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x7B);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4d);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_base、0xab);//发送寄存器数据
for (j=0;j<16;j++)
{
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4F);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_base、j);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x50);//发送寄存器地址
for (i=0;i<32;i++)
MAP_I2C_masterSendMultiByteNext (EUSCI_B1_BASE、Table_34[i+j*32]);//发送寄存器数据
}
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x35);//在 U5中将十六进制加载到 SRAM
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4b);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x09);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4c);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x77);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4d);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0xa6);//发送寄存器数据
参考 www.ti.com
for (j=0;j<16;j++)
{
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x4F);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_base、j);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x50);//发送寄存器地址
for (i=0;i<32;i++)
MAP_I2C_masterSendMultiByteNext (eUSCI_B1_base、table_35[i+j*32]);//发送寄存器数据;
}
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x32);//将 U1设置为 clk out
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x2F);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x49);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x3D);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x08);//发送寄存器数据
MAP_I2C_setSlaveAddress (EUSCI_B1_BASE、0x40);//运行所有引擎
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x02);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0x00);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x02);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0xa8);//发送寄存器数据
MAP_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x01);//发送寄存器地址
MAP_I2C_masterSendMultiByteFinish (EUSCI_B1_BASE、0xa8);//发送寄存器数据
}
我们使用什么地址将数据模式传递到 SRAM?