Other Parts Discussed in Thread: C2000WARE
这是ADC3140的配置,两个级联的ADC3140芯片,我想实现一个帧同步发送8个slot的32位数据出来到总线,请问这样配置有什么不妥之处吗?
void I2C_config(void) { IICA_Write(0x98,0x02,0x81); IICA_Write(0x9A,0x02,0x81); DELAY_US(10*1000); IICA_Write(0x98,0x00,0x00); IICA_Write(0x98,0x07,0x31); IICA_Write(0x98,0x08,0x00); IICA_Write(0x98,0x09,0x00); IICA_Write(0x98,0x21,0xA2); IICA_Write(0x98,0x3B,0x00); IICA_Write(0x98,0x0B,0x00); IICA_Write(0x98,0x0C,0x01); IICA_Write(0x98,0x0D,0x02); IICA_Write(0x98,0x0E,0x03); IICA_Write(0x98,0x3C,0xB4); IICA_Write(0x98,0x41,0xB4); IICA_Write(0x98,0x46,0xB4); IICA_Write(0x98,0x4B,0xB4); /* IICA_Write(0x98,0x3C,0x94); IICA_Write(0x98,0x41,0x94); IICA_Write(0x98,0x46,0x94); IICA_Write(0x98,0x4B,0x94); */ IICA_Write(0x98,0x3D,0x24); IICA_Write(0x98,0x42,0x24); IICA_Write(0x98,0x47,0x24); IICA_Write(0x98,0x4C,0x24); IICA_Write(0x98,0x6B,0x00); IICA_Write(0x98,0x6C,0xD0); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x08,0x7F); IICA_Write(0x98,0x09,0xFF); IICA_Write(0x98,0x0A,0xFF); IICA_Write(0x98,0x0B,0xFF); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x0C,0x80); IICA_Write(0x98,0x0D,0xD3); IICA_Write(0x98,0x0E,0xD5); IICA_Write(0x98,0x0F,0xE3); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x10,0x7F); IICA_Write(0x98,0x11,0x93); IICA_Write(0x98,0x12,0x61); IICA_Write(0x98,0x13,0x37); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x14,0x7F); IICA_Write(0x98,0x15,0x4F); IICA_Write(0x98,0x16,0x03); IICA_Write(0x98,0x17,0xF2); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x18,0x80); IICA_Write(0x98,0x19,0x26); IICA_Write(0x98,0x1A,0x94); IICA_Write(0x98,0x1B,0xC9); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x58,0x7F); IICA_Write(0x98,0x59,0xFF); IICA_Write(0x98,0x5A,0xFF); IICA_Write(0x98,0x5B,0xFF); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x5C,0x80); IICA_Write(0x98,0x5D,0xD3); IICA_Write(0x98,0x5E,0xD5); IICA_Write(0x98,0x5F,0xE3); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x60,0x7F); IICA_Write(0x98,0x61,0x93); IICA_Write(0x98,0x62,0x61); IICA_Write(0x98,0x63,0x37); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x64,0x7F); IICA_Write(0x98,0x65,0x4F); IICA_Write(0x98,0x66,0x03); IICA_Write(0x98,0x67,0xF2); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x68,0x80); IICA_Write(0x98,0x69,0x26); IICA_Write(0x98,0x6A,0x94); IICA_Write(0x98,0x6B,0xC9); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x1C,0x7F); IICA_Write(0x98,0x1D,0xFF); IICA_Write(0x98,0x1E,0xFF); IICA_Write(0x98,0x1F,0xFF); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x20,0x80); IICA_Write(0x98,0x21,0xD3); IICA_Write(0x98,0x22,0xD5); IICA_Write(0x98,0x23,0xE3); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x24,0x7F); IICA_Write(0x98,0x25,0x93); IICA_Write(0x98,0x26,0x61); IICA_Write(0x98,0x27,0x37); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x28,0x7F); IICA_Write(0x98,0x29,0x4F); IICA_Write(0x98,0x2A,0x03); IICA_Write(0x98,0x2B,0xF2); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x2C,0x80); IICA_Write(0x98,0x2D,0x26); IICA_Write(0x98,0x2E,0x94); IICA_Write(0x98,0x2F,0xC9); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x6C,0x7F); IICA_Write(0x98,0x6D,0xFF); IICA_Write(0x98,0x6E,0xFF); IICA_Write(0x98,0x6F,0xFF); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x70,0x80); IICA_Write(0x98,0x71,0xD3); IICA_Write(0x98,0x72,0xD5); IICA_Write(0x98,0x73,0xE3); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x74,0x7F); IICA_Write(0x98,0x75,0x93); IICA_Write(0x98,0x76,0x61); IICA_Write(0x98,0x77,0x37); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x78,0x7F); IICA_Write(0x98,0x79,0x4F); IICA_Write(0x98,0x7A,0x03); IICA_Write(0x98,0x7B,0xF2); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x7C,0x80); IICA_Write(0x98,0x7D,0x26); IICA_Write(0x98,0x7E,0x94); IICA_Write(0x98,0x7F,0xC9); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x30,0x7F); IICA_Write(0x98,0x31,0xFF); IICA_Write(0x98,0x32,0xFF); IICA_Write(0x98,0x33,0xFF); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x34,0x80); IICA_Write(0x98,0x35,0xD3); IICA_Write(0x98,0x36,0xD5); IICA_Write(0x98,0x37,0xE3); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x38,0x7F); IICA_Write(0x98,0x39,0x93); IICA_Write(0x98,0x3A,0x61); IICA_Write(0x98,0x3B,0x37); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x3C,0x7F); IICA_Write(0x98,0x3D,0x4F); IICA_Write(0x98,0x3E,0x03); IICA_Write(0x98,0x3F,0xF2); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x40,0x80); IICA_Write(0x98,0x41,0x26); IICA_Write(0x98,0x42,0x94); IICA_Write(0x98,0x43,0xC9); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x08,0x7F); IICA_Write(0x98,0x09,0xFF); IICA_Write(0x98,0x0A,0xFF); IICA_Write(0x98,0x0B,0xFF); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x0C,0x80); IICA_Write(0x98,0x0D,0xD3); IICA_Write(0x98,0x0E,0xD5); IICA_Write(0x98,0x0F,0xE3); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x10,0x7F); IICA_Write(0x98,0x11,0x93); IICA_Write(0x98,0x12,0x61); IICA_Write(0x98,0x13,0x37); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x14,0x7F); IICA_Write(0x98,0x15,0x4F); IICA_Write(0x98,0x16,0x03); IICA_Write(0x98,0x17,0xF2); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x18,0x80); IICA_Write(0x98,0x19,0x26); IICA_Write(0x98,0x1A,0x94); IICA_Write(0x98,0x1B,0xC9); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x44,0x7F); IICA_Write(0x98,0x45,0xFF); IICA_Write(0x98,0x46,0xFF); IICA_Write(0x98,0x47,0xFF); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x48,0x80); IICA_Write(0x98,0x49,0xD3); IICA_Write(0x98,0x4A,0xD5); IICA_Write(0x98,0x4B,0xE3); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x4C,0x7F); IICA_Write(0x98,0x4D,0x93); IICA_Write(0x98,0x4E,0x61); IICA_Write(0x98,0x4F,0x37); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x50,0x7F); IICA_Write(0x98,0x51,0x4F); IICA_Write(0x98,0x52,0x03); IICA_Write(0x98,0x53,0xF2); IICA_Write(0x98,0x00,0x02); IICA_Write(0x98,0x54,0x80); IICA_Write(0x98,0x55,0x26); IICA_Write(0x98,0x56,0x94); IICA_Write(0x98,0x57,0xC9); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x1C,0x7F); IICA_Write(0x98,0x1D,0xFF); IICA_Write(0x98,0x1E,0xFF); IICA_Write(0x98,0x1F,0xFF); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x20,0x80); IICA_Write(0x98,0x21,0xD3); IICA_Write(0x98,0x22,0xD5); IICA_Write(0x98,0x23,0xE3); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x24,0x7F); IICA_Write(0x98,0x25,0x93); IICA_Write(0x98,0x26,0x61); IICA_Write(0x98,0x27,0x37); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x28,0x7F); IICA_Write(0x98,0x29,0x4F); IICA_Write(0x98,0x2A,0x03); IICA_Write(0x98,0x2B,0xF2); IICA_Write(0x98,0x00,0x03); IICA_Write(0x98,0x2C,0x80); IICA_Write(0x98,0x2D,0x26); IICA_Write(0x98,0x2E,0x94); IICA_Write(0x98,0x2F,0xC9); IICA_Write(0x98,0x00,0x00); IICA_Write(0x98,0x73,0xF0); IICA_Write(0x98,0x74,0xF0); IICA_Write(0x9A,0x00,0x00); IICA_Write(0x9A,0x07,0x31); IICA_Write(0x9A,0x08,0x00); IICA_Write(0x9A,0x09,0x00); IICA_Write(0x9A,0x21,0xA2); IICA_Write(0x9A,0x3B,0x00); IICA_Write(0x9A,0x0B,0x04); IICA_Write(0x9A,0x0C,0x05); IICA_Write(0x9A,0x0D,0x06); IICA_Write(0x9A,0x0E,0x07); IICA_Write(0x9A,0x3C,0xB4); IICA_Write(0x9A,0x41,0xB4); IICA_Write(0x9A,0x46,0xB4); IICA_Write(0x9A,0x4B,0xB4); /* IICA_Write(0x9A,0x3C,0x94); IICA_Write(0x9A,0x41,0x94); IICA_Write(0x9A,0x46,0x94); IICA_Write(0x9A,0x4B,0x94); */ IICA_Write(0x9A,0x3D,0x24); IICA_Write(0x9A,0x42,0x24); IICA_Write(0x9A,0x47,0x24); IICA_Write(0x9A,0x4C,0x24); IICA_Write(0x9A,0x6B,0x00); IICA_Write(0x9A,0x6C,0x90); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x08,0x7F); IICA_Write(0x9A,0x09,0xFF); IICA_Write(0x9A,0x0A,0xFF); IICA_Write(0x9A,0x0B,0xFF); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x0C,0x80); IICA_Write(0x9A,0x0D,0xD3); IICA_Write(0x9A,0x0E,0xD5); IICA_Write(0x9A,0x0F,0xE3); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x10,0x7F); IICA_Write(0x9A,0x11,0x93); IICA_Write(0x9A,0x12,0x61); IICA_Write(0x9A,0x13,0x37); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x14,0x7F); IICA_Write(0x9A,0x15,0x4F); IICA_Write(0x9A,0x16,0x03); IICA_Write(0x9A,0x17,0xF2); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x18,0x80); IICA_Write(0x9A,0x19,0x26); IICA_Write(0x9A,0x1A,0x94); IICA_Write(0x9A,0x1B,0xC9); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x58,0x7F); IICA_Write(0x9A,0x59,0xFF); IICA_Write(0x9A,0x5A,0xFF); IICA_Write(0x9A,0x5B,0xFF); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x5C,0x80); IICA_Write(0x9A,0x5D,0xD3); IICA_Write(0x9A,0x5E,0xD5); IICA_Write(0x9A,0x5F,0xE3); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x60,0x7F); IICA_Write(0x9A,0x61,0x93); IICA_Write(0x9A,0x62,0x61); IICA_Write(0x9A,0x63,0x37); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x64,0x7F); IICA_Write(0x9A,0x65,0x4F); IICA_Write(0x9A,0x66,0x03); IICA_Write(0x9A,0x67,0xF2); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x68,0x80); IICA_Write(0x9A,0x69,0x26); IICA_Write(0x9A,0x6A,0x94); IICA_Write(0x9A,0x6B,0xC9); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x1C,0x7F); IICA_Write(0x9A,0x1D,0xFF); IICA_Write(0x9A,0x1E,0xFF); IICA_Write(0x9A,0x1F,0xFF); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x20,0x80); IICA_Write(0x9A,0x21,0xD3); IICA_Write(0x9A,0x22,0xD5); IICA_Write(0x9A,0x23,0xE3); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x24,0x7F); IICA_Write(0x9A,0x25,0x93); IICA_Write(0x9A,0x26,0x61); IICA_Write(0x9A,0x27,0x37); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x28,0x7F); IICA_Write(0x9A,0x29,0x4F); IICA_Write(0x9A,0x2A,0x03); IICA_Write(0x9A,0x2B,0xF2); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x2C,0x80); IICA_Write(0x9A,0x2D,0x26); IICA_Write(0x9A,0x2E,0x94); IICA_Write(0x9A,0x2F,0xC9); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x6C,0x7F); IICA_Write(0x9A,0x6D,0xFF); IICA_Write(0x9A,0x6E,0xFF); IICA_Write(0x9A,0x6F,0xFF); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x70,0x80); IICA_Write(0x9A,0x71,0xD3); IICA_Write(0x9A,0x72,0xD5); IICA_Write(0x9A,0x73,0xE3); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x74,0x7F); IICA_Write(0x9A,0x75,0x93); IICA_Write(0x9A,0x76,0x61); IICA_Write(0x9A,0x77,0x37); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x78,0x7F); IICA_Write(0x9A,0x79,0x4F); IICA_Write(0x9A,0x7A,0x03); IICA_Write(0x9A,0x7B,0xF2); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x7C,0x80); IICA_Write(0x9A,0x7D,0x26); IICA_Write(0x9A,0x7E,0x94); IICA_Write(0x9A,0x7F,0xC9); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x30,0x7F); IICA_Write(0x9A,0x31,0xFF); IICA_Write(0x9A,0x32,0xFF); IICA_Write(0x9A,0x33,0xFF); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x34,0x85); IICA_Write(0x9A,0x35,0x75); IICA_Write(0x9A,0x36,0x4B); IICA_Write(0x9A,0x37,0xED); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x38,0x7D); IICA_Write(0x9A,0x39,0x08); IICA_Write(0x9A,0x3A,0x7A); IICA_Write(0x9A,0x3B,0xA3); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x3C,0x7B); IICA_Write(0x9A,0x3D,0x9D); IICA_Write(0x9A,0x3E,0x54); IICA_Write(0x9A,0x3F,0x5D); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x40,0x80); IICA_Write(0x9A,0x41,0xC0); IICA_Write(0x9A,0x42,0x74); IICA_Write(0x9A,0x43,0x06); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x08,0x7F); IICA_Write(0x9A,0x09,0xFF); IICA_Write(0x9A,0x0A,0xFF); IICA_Write(0x9A,0x0B,0xFF); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x0C,0x90); IICA_Write(0x9A,0x0D,0x18); IICA_Write(0x9A,0x0E,0x5C); IICA_Write(0x9A,0x0F,0xDC); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x10,0x7F); IICA_Write(0x9A,0x11,0x66); IICA_Write(0x9A,0x12,0xAC); IICA_Write(0x9A,0x13,0xB6); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x14,0x70); IICA_Write(0x9A,0x15,0x19); IICA_Write(0x9A,0x16,0xE9); IICA_Write(0x9A,0x17,0xAD); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x18,0x80); IICA_Write(0x9A,0x19,0x26); IICA_Write(0x9A,0x1A,0x94); IICA_Write(0x9A,0x1B,0xC9); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x44,0x7F); IICA_Write(0x9A,0x45,0xFF); IICA_Write(0x9A,0x46,0xFF); IICA_Write(0x9A,0x47,0xFF); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x48,0x80); IICA_Write(0x9A,0x49,0xD3); IICA_Write(0x9A,0x4A,0xD5); IICA_Write(0x9A,0x4B,0xE3); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x4C,0x7F); IICA_Write(0x9A,0x4D,0x93); IICA_Write(0x9A,0x4E,0x61); IICA_Write(0x9A,0x4F,0x37); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x50,0x7F); IICA_Write(0x9A,0x51,0x4F); IICA_Write(0x9A,0x52,0x03); IICA_Write(0x9A,0x53,0xF2); IICA_Write(0x9A,0x00,0x02); IICA_Write(0x9A,0x54,0x80); IICA_Write(0x9A,0x55,0x26); IICA_Write(0x9A,0x56,0x94); IICA_Write(0x9A,0x57,0xC9); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x1C,0x7F); IICA_Write(0x9A,0x1D,0xFF); IICA_Write(0x9A,0x1E,0xFF); IICA_Write(0x9A,0x1F,0xFF); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x20,0x80); IICA_Write(0x9A,0x21,0xD3); IICA_Write(0x9A,0x22,0xD5); IICA_Write(0x9A,0x23,0xE3); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x24,0x7F); IICA_Write(0x9A,0x25,0x93); IICA_Write(0x9A,0x26,0x61); IICA_Write(0x9A,0x27,0x37); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x28,0x7F); IICA_Write(0x9A,0x29,0x4F); IICA_Write(0x9A,0x2A,0x03); IICA_Write(0x9A,0x2B,0xF2); IICA_Write(0x9A,0x00,0x03); IICA_Write(0x9A,0x2C,0x80); IICA_Write(0x9A,0x2D,0x26); IICA_Write(0x9A,0x2E,0x94); IICA_Write(0x9A,0x2F,0xC9); IICA_Write(0x9A,0x00,0x00); IICA_Write(0x9A,0x73,0xF0); IICA_Write(0x9A,0x74,0xF0); IICA_Write(0x98,0x75,0x60); IICA_Write(0x9A,0x75,0x60); }
这是F28335的McBSP的配置,我想实现直接从McBSP发送数据到DMA,DSP不需要发送数据,只需要接收数据,这样配置有什么问题吗?
void InitMcbspaGpio(void) { EALLOW; /* Configure McBSP-A pins using GPIO regs*/ // This specifies which of the possible GPIO pins will be McBSP functional pins. // Comment out other unwanted lines. // GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 2; // GPIO20 is MDXA pin GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 2; // GPIO21 is MDRA pin // GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 2; // GPIO22 is MCLKXA pin //GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 2; // GPIO7 is MCLKRA pin (Comment as needed) GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 1; // GPIO58 is MCLKRA pin (Comment as needed) // GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 2; // GPIO23 is MFSXA pin //GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 2; // GPIO5 is MFSRA pin (Comment as needed) GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 1; // GPIO59 is MFSRA pin (Comment as needed) /* Enable internal pull-up for the selected pins */ // Pull-ups can be enabled or disabled by the user. // This will enable the pullups for the specified pins. // Comment out other unwanted lines. // GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pull-up on GPIO20 (MDXA) GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pull-up on GPIO21 (MDRA) // GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up on GPIO22 (MCLKXA) //GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pull-up on GPIO7 (MCLKRA) (Comment as needed) GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; // Enable pull-up on GPIO58 (MCLKRA) (Comment as needed) // GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up on GPIO23 (MFSXA) //GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pull-up on GPIO5 (MFSRA) (Comment as needed) GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0; // Enable pull-up on GPIO59 (MFSRA) (Comment as needed) /* Set qualification for selected input pins to asynch only */ // This will select asynch (no qualification) for the selected pins. // Comment out other unwanted lines. /* GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3; // Asynch input GPIO21 (MDRA) // GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 3; // Asynch input GPIO22 (MCLKXA) //GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3; // Asynch input GPIO7 (MCLKRA) (Comment as needed) GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // Asynch input GPIO58(MCLKRA) (Comment as needed) // GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3; // Asynch input GPIO23 (MFSXA) //GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 3; // Asynch input GPIO5 (MFSRA) (Comment as needed) GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; // Asynch input GPIO59 (MFSRA) (Comment as needed) */ EDIS; } void InitMcbspa(void) { // McBSP-A register settings McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word //新增 McbspaRegs.SPCR2.bit.FREE=1; McbspaRegs.SPCR2.bit.SOFT=1; //当在高级语言调试器中遇到断点时,它们决定McBSP的状态。如果FREE = 1,时钟在软件断点上继续运行,数据仍然被移出。当FREE = 1时,软位是一个不关心。 //FREE = 0表示软位生效。当断点发生时,如果SOFT = 0,时钟立即停止,终止传输。如果SOFT = 1,并且在传输过程中出现断点,则继续传输,直到传输完成,然后时钟停止 McbspaRegs.MFFINT.all=0x0000; // Disable all interrupts MCBSP中断不使能是能的原因可能是因为和DMA连接所以没直接接到CPU的PIE级,而是发送XEVT信号到DMA. McbspaRegs.RCR1.bit.RFRLEN1 = 7; //每帧8个码字,每字32位 McbspaRegs.RCR1.bit.RWDLEN1=5; // 32-bit word McbspaRegs.RCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Receive) McbspaRegs.RCR1.all=0x0; // McbspaRegs.PCR.bit.FSXM = 1; // FSX generated internally, FSR derived from an external source McbspaRegs.PCR.bit.SCLKME = 0; McbspaRegs.PCR.bit.FSRM = 1; // McbspaRegs.PCR.bit.CLKXM = 1; // CLKX generated internally, CLKR derived from an external source McbspaRegs.PCR.bit.CLKRM = 1; McbspaRegs.SRGR2.bit.CLKSM = 1; // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK) McbspaRegs.SRGR2.bit.FPER = 255; // FPER = 256 CLKG periods McbspaRegs.SRGR2.bit.FSGM = 1; McbspaRegs.SRGR1.bit.FWID = 127; // Frame Width = 128 CLKG period McbspaRegs.SRGR1.bit.CLKGDV = CLKGDV_VAL; // CLKG frequency = LSPCLK/(CLKGDV+1) delay_loop(); // Wait at least 2 SRG clock cycles McbspaRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator clkg_delay_loop(); // Wait at least 2 CLKG cycles McbspaRegs.SPCR2.bit.XRST=1; // Release TX from Reset McbspaRegs.SPCR1.bit.RRST=1; // Release RX from Reset McbspaRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset }
这是DMA的代码,这个部分我需要请求各位的帮助,因为我的rdata数组初始化以后,我看程序Debug的时候没有变化。
void init_dma_32() { EALLOW; DmaRegs.DMACTRL.bit.HARDRESET = 1; asm(" NOP"); // Only 1 NOP needed per Design // Channel 2, McBSPA Receive DmaRegs.CH2.BURST_SIZE.all = 1; // 2 words/burst DmaRegs.CH2.SRC_BURST_STEP = 1; // Increment 1 16-bit addr. btwn words DmaRegs.CH2.DST_BURST_STEP = 1; // Increment 1 16-bit addr. btwn words DmaRegs.CH2.TRANSFER_SIZE = 1023; // Interrupt every 512 bursts/transfer DmaRegs.CH2.SRC_TRANSFER_STEP = 0xFFFF; // Decrement back to DRR2 DmaRegs.CH2.DST_TRANSFER_STEP = 1; // Move to next word in buffer after each word in a burst DmaRegs.CH2.SRC_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR2.all; // Start address = McBSPA DRR DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR2.all; // Not needed unless using wrap function DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32) &rdata[0]; // Start address = Receive buffer (for McBSP-A) DmaRegs.CH2.DST_BEG_ADDR_SHADOW = (Uint32) &rdata[0]; // Not needed unless using wrap function DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1; // Clear sync flag DmaRegs.CH2.CONTROL.bit.ERRCLR = 1; // Clear sync error flag DmaRegs.CH2.DST_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want destination wrap DmaRegs.CH2.SRC_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want source wrap DmaRegs.CH2.MODE.bit.CHINTE = 1; // Enable channel interrupt //新增 DmaRegs.CH2.MODE.bit.ONESHOT = 1; //连续传送帧信号,直到transfer count =0 .不然只传送一帧。continuous=0,transfer count =0时就停止传送。 DmaRegs.CH2.MODE.bit.CHINTMODE = 1; // Interrupt at end of transfer DmaRegs.CH2.MODE.bit.PERINTE = 1; // Enable peripheral interrupt event DmaRegs.CH2.MODE.bit.PERINTSEL = DMA_MREVTA; // Peripheral interrupt select = McBSP MRSYNCA DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags EDIS; } void start_dma (void) { EALLOW; DmaRegs.CH2.CONTROL.bit.RUN = 1; // Start DMA Receive from McBSP-A EDIS; }