我正在开发一个32位,保护模式的业余爱好操作系统.目前,我希望增加简单的声音支持.为此,我希望使用声音冲击波16并使用直接模式写入DAC(我想不惜一切代价避免使用DMA).但是,当我向DAC输出一个简单的方波(使用命令0x10)时,我的计算机扬声器没有声音输出.我正在寻找这个问题的解决方案.
我试图使用以下算法来产生声音:
1. Reset DSP
2. Enable the speakers
3. Write 0x10 to 0x22C (direct mode DAC write command)
4. Write 0x00 to 0x22C (To set the speaker to low)
5. Write 0x10 to 0x22C
6. Write 0xFF to 0x22C (To set the speaker to high)
7. Jump back to step 4 and repeat.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#define DSP_RESET 0x226
#define DSP_READ 0x22A
#define DSP_WRITE 0x22C
#define DSP_READ_STATUS 0x22E
#define DSP_INT_ACK 0x22F
#define REG_ADDR 0x224
#define REG_DATA 0x225
#define DIRECT_DAC 0x10
#define …Run Code Online (Sandbox Code Playgroud)