sunweihejuan 发表于 2015-3-8 14:16:45

PDM to PCM 代码

18028703418

        .syntax unified
        .cpu cortex-m4
        .fpu fpv4-sp-d16
@;        .eabi_attribute 20, 1
@;        .eabi_attribute 21, 1
@;        .eabi_attribute 23, 3
@;        .eabi_attribute 24, 1
@;        .eabi_attribute 25, 1
@;        .eabi_attribute 26, 2
@;        .eabi_attribute 30, 2
@;        .eabi_attribute 18, 2
        .thumb


@; ===========================================================================
@; Segment type:        Externs
@; ===========================================================================
        .global __aeabi_fcmpeq
        .global __aeabi_fmul
        .global __aeabi_f2d
        .global __aeabi_i2d
        .global __aeabi_ddiv
        .global __aeabi_dadd
        .global __aeabi_d2uiz
        .global __aeabi_dmul

@; ===========================================================================
        .section .text.PDM_Filter_Init
        .code 16
        .weak PDM_Filter_Init
        .type PDM_Filter_Init, %function
@; ===========================================================================
PDM_Filter_Init:
                PUSH.W        {R3-R11,LR}
@;                LDR        R2, =0xF407A5C2 @test data
@;                LDR        R3, =0x40023000 @CRC BASE
                MOV        R5, R0
@;                STR        R2, @load 0xF407A5C2 into crc data register
@;                LDR        R3, @get contents of crc data register
@;                LDR        R2, =0xB5E8B5CD @load control word
                MOVS        R6, #0
@;                CMP        R3, R2 @compare crc32 and awaited result
@;                BNE        loc_42 @ Checking that it's really CPU, that manufatured by ST.
@;                LDR        R2, =stm32_crc @get contents of
                LDR        R7,                         @LP_HZ
                ADD.W        R4, R0,        #0x10
@;                STR        R3, @save 0xB5E8B5CD into =stm32_crc variable
                STR        R6,
                STR        R6,
                STR        R6,
                STR        R6,
                STR        R6,
                STR        R6,
                STR        R6,
                MOV        R0, R7
                MOVS        R1, #0
                BL        __aeabi_fcmpeq                @fcmpeq(LP_HZ, 0)
                CBZ        R0, loc_44
                B        loc_90
@; ---------------------------------------------------------------------------
@;
@;loc_42:
@;                B        loc_42
@; ---------------------------------------------------------------------------

loc_44:
                MOV        R0, R7
                MOV.W        R1, #0x43800000
                BL        __aeabi_fmul
                BL        __aeabi_f2d
                MOV        R8, R0
                MOV        R0, R7
                MOV        R9, R1
                BL        __aeabi_f2d
                MOV        R6, R0
                LDRH        R0,
                MOV        R7, R1
                BL        __aeabi_i2d
                ADR        R3, dword_F8
                LDRD.W        R2, R3,       
                BL        __aeabi_ddiv
                MOV        R2, R0
                MOV        R3, R1
                MOV        R0, R6
                MOV        R1, R7
                BL        __aeabi_dadd
                MOV        R2, R0
                MOV        R3, R1
                MOV        R0, R8
                MOV        R1, R9
                BL        __aeabi_ddiv
                BL        __aeabi_d2uiz
                STRH        R0,
                B        loc_92
@; ---------------------------------------------------------------------------

loc_90:
                STRH        R6,

loc_92:
                LDR        R7,
                MOVS        R1, #0
                MOV        R0, R7
                BL        __aeabi_fcmpeq
                CBNZ        R0, loc_E4
                LDRH        R6,
                LSLS        R0, R6,        #8
                BL        __aeabi_i2d
                MOV        R10, R0
                MOV        R0, R7
                MOV        R11, R1
                BL        __aeabi_f2d
                ADR        R3, dword_F8
                LDRD.W        R2, R3,       
                BL        __aeabi_dmul
                MOV        R8, R0
                MOV        R0, R6
                MOV        R9, R1
                BL        __aeabi_i2d
                MOV        R2, R0
                MOV        R3, R1
                MOV        R0, R8
                MOV        R1, R9
                BL        __aeabi_dadd
                MOV        R2, R0
                MOV        R3, R1
                MOV        R0, R10
                MOV        R1, R11
                BL        __aeabi_ddiv
                BL        __aeabi_d2uiz
                STRH        R0,
                B        loc_E8
@; ---------------------------------------------------------------------------

loc_E4:
                MOVS        R3, #0
                STRH        R3,

loc_E8:
                LDRH        R2,
                MOV.W        R3, #0x3E8
                UDIV.W        R3, R2,        R3
                STRH        R3,
                POP.W        {R3-R11,PC}
@; End of function PDM_Filter_Init

@; ---------------------------------------------------------------------------
        .align 8
dword_F8:
        .word 0x51EB851F, 0x40191EB8
@;dword_100:
@;        .word 0xF407A5C2
@;dword_104:
@;        .word 0x40023000
@;dword_108:
@;        .word 0xB5E8B5CD
@;off_10C:
@;        .word stm32_crc                @; DATA XREF: PDM_Filter_Init+16r
        @ENDP
        .size PDM_Filter_Init, .-PDM_Filter_Init



@; ===========================================================================
        .section .text.PDM_Filter_64_LSB
        .code 16
        .weak PDM_Filter_64_LSB
        .type PDM_Filter_64_LSB, %function
@; ===========================================================================
PDM_Filter_64_LSB:

var_A4                = -0xA4
var_9C                = -0x9C
var_94                = -0x94
var_90                = -0x90
var_8C                = -0x8C
var_88                = -0x88
var_84                = -0x84
var_80                = -0x80
var_7C                = -0x7C
var_78                = -0x78
var_74                = -0x74
var_70                = -0x70
var_6C                = -0x6C
var_68                = -0x68
var_64                = -0x64
var_60                = -0x60
var_5C                = -0x5C
var_58                = -0x58
var_54                = -0x54
var_50                = -0x50
var_4C                = -0x4C
var_48                = -0x48
var_44                = -0x44
var_40                = -0x40
var_3C                = -0x3C
var_38                = -0x38
var_34                = -0x34
var_30                = -0x30
var_2C                = -0x2C

                PUSH.W        {R4-R11,LR}
                SUB        SP, SP,        #0x84
                STR        R2,
@;                LDR        R2, =stm32_crc @load address of stm32_crc
                STR        R1,
@;                LDR        R1, @load 0xB5E8B5CD that in stm32_crc ram var
@;                LDR        R2, =0xB5E8B5CD @load awaited value
@;                CMP        R1, R2
@;                BEQ        loc_126 @if all ok, do the stuff
@;
@;loc_124:
@;                B        loc_124
@; ---------------------------------------------------------------------------

loc_126:
                ADD.W        R2, R3,        #0x10
                LDR        R4,
                LDR        R1,
                STR        R4,
                LDR        R4,
                STR        R1,
                LDR        R1,
                STR        R4,
                LDRH        R4,
                STR        R1,
                LDRH        R1,
                LDR        R5,
                STR        R4,
                MOVS        R4, #6
                MULS        R4, R1
                STR        R5,
                LDRH        R5,
                MOV.W        R9, R1,LSL#2
                MOV.W        R11, R1,LSL#3
                STR        R5,
                LSLS        R5, R1,        #1
                ADD.W        R8, R5,        R1
                ADD.W        R10, R9, R1
                STR        R4,
                RSB.W        R12, R1, R11
                MOVS        R4, #0
                LDR        R7,
                LDR        R6,
                STR        R5,
                STR.W        R8,
                STR.W        R9,
                STR.W        R10,
                STR.W        R11,
                STR.W        R12,
                STR        R4,
                STR        R1,
                STR        R3,
                B        loc_3B0
@; ---------------------------------------------------------------------------

loc_188:
                LDRB.W        R8,
                LDR.W        R10, =T2
                LDR        R5,
                LDRB.W        R4,
                LDR.W        R9,
                ADDS        R6, R6,        R4
                STR        R6,
                LDRB.W        R12,
                LDR        R6, =T1
                LDRB.W        R4,
                LDRB.W        R5,
                LDR        R1,
                ADD.W        R4, R4,        R5,LSL#1
                ADDS        R7, R4,        R7
                STR        R7,
                LDRB.W        R4,
                LDR        R7, =T0
                LDRB.W        R5,
                LDRB.W        R8,
                LDRB.W        R11,
                ADD        R5, R8
                LDRB.W        R8,
                LDRB.W        R9,
                ADD.W        R5, R5,        R8,LSL#1
                LDRB.W        R8,
                LDRB.W        R12,
                ADD        R9, R8
                ADD.W        R12, R9, R12,LSL#1
                LDR        R3,
                STR.W        R12,
                LDRB.W        R9,
                LDRB        R4,
                LDRB.W        R12,
                LDRB.W        R8,
                ADD        R4, R12
                ADD.W        R8, R4,        R8,LSL#1
                LDR        R4,
                STR.W        R8,
                ADD        R4, R8
                LDR.W        R8,
                STR        R4,
                LDRB.W        R12,
                LDRB.W        R8,
                LDRB.W        R4,
                LDR        R1,
                ADD        R4, R8
                LDRB.W        R8,
                LDRB.W        R9,
                ADD.W        R4, R4,        R8,LSL#1
                ADD.W        R11, R4, R5
                STR.W        R11,
                LDRB.W        R8,
                LDRB.W        R11,
                ADD        R9, R11
                LDRB.W        R11,
                ADD.W        R11, R9, R11,LSL#1
                STR.W        R11,
                LDR        R3,
                LDRB.W        R12,
                ADD        R3, R11
                LDR.W        R11,
                STR        R3,
                LDRB.W        R9,
                LDRB.W        R11,
                LDRB.W        R10,
                LDR        R1,
                ADD        R12, R10
                ADD.W        R11, R12, R11,LSL#1
                LDR.W        R12,
                MOV.W        R10, R5,LSL#4
                ADD        R12, R11
                STR.W        R12,
                RSB.W        R10, R5, R10
                LDRB.W        R12,
                MOV.W        R8, #0xA
                MLA.W        R10, R8, R1, R10
                LDRB.W        R6,
                LDR        R3,
                STR.W        R11,
                ADD        R10, R3
                LDR.W        R11,
                ADD.W        R6, R12, R6,LSL#1
                ADD.W        R12, R4, R4,LSL#1
                ADD        R10, R12
                LDRB.W        R7,
                MOV.W        R9, #6
                MLA.W        R10, R9, R11, R10
                LDR        R1,
                LDR        R3,
                ADD        R10, R1
                MOV.W        R12, #0x1C
                MLA.W        R10, R12, R3, R10
                LDR        R1,
                MOV.W        R11, #0x15
                MLA.W        R10, R11, R1, R10
                LDR        R3,
                STR.W        R10,
                MOV.W        R10, #0x2E @; '.'
                MUL.W        R10, R10, R3
                LDR        R1,
                MOVS        R3, #0x30 @; '0'
                MLA.W        R10, R3, R1, R10
                LDR        R1,
                LDR        R3,
                ADD        R1, R10
                MOV.W        R10, #0x24 @; '$'
                MLA.W        R3, R10, R3, R1
                LDR        R1,
                ADD        R10, R9
                MLA.W        R1, R10, R1, R3
                STR        R1,
                LDR        R1,
                ADD.W        R5, R5,        R5,LSL#1
                MLA.W        R9, R9,        R1, R5
                LSLS        R5, R4,        #4
                SUBS        R4, R5,        R4
                LDR        R3,
                ADD        R9, R4
                MLA.W        R9, R8,        R3, R9
                LDR        R4,
                LDR        R5,
                MLA.W        R9, R12, R4, R9
                MLA.W        R9, R11, R5, R9
                LDR        R1,
                LDR        R3,
                LDR        R4,
                ADD        R1, R9
                STR        R1,
                SUB.W        R10, R3, #0x20000
                CBZ        R4, loc_33E
                LDR        R5,
                LDR        R1,
                LDR        R3,
                SUBS        R4, R5,        R1
                ADD        R4, R10
                MULS        R4, R3
                IT MI
                ADDMI        R4, #0xFF
                ASRS        R4, R4,        #8
                STR.W        R10,
                STR        R4,
                MOV        R10, R4

loc_33E:
                LDR        R4,
                CBZ        R4, loc_35C
                LDR        R5,
                RSB.W        R4, R4,        #0x100
                MULS        R4, R5
                LDR        R1,
                MLA.W        R4, R1,        R10, R4
                CMP        R4, #0
                IT LT
                ADDLT        R4, #0xFF
                ASRS        R4, R4,        #8
                STR        R4,
                MOV        R10, R4

loc_35C:
                LDR        R3,
                MUL.W        R10, R3, R10
                CMP.W        R10, #0
                BLE        loc_372
                ADD.W        R10, R10, #8
                MOV.W        R10, R10,ASR#4
                B        loc_380
@; ---------------------------------------------------------------------------

loc_372:
                SUBS.W        R12, R10, #8
                IT MI
                ADDMI.W        R12, R10, #7
                MOV.W        R10, R12,ASR#4

loc_380:
                LDR        R5,
                LDR.W        R8,
                LDRH        R4,
                MOVW        R12, #0x7FBC
                MUL.W        R4, R4,        R8
                LDR        R5, =0xFFFF8044
                CMP        R10, R12
                IT LT
                MOVLT        R12, R10
                LDR        R1,
                LDR        R3,
                CMP        R12, R5
                IT GE
                MOVGE        R5, R12
                ADD.W        R8, R8,        #1
                STRH.W        R5,
                ADDS        R0, R0,        R3
                STR.W        R8,

loc_3B0:
                LDRH        R4,
                LDR        R5,
                CMP        R5, R4
                BLT.W        loc_188
                LDR        R3,
                LDR        R1,
                STR        R7,
                LDR        R3,
                STR        R1,
                STR        R3,
                LDR        R5,
                LDR        R1,
                LDR        R3,
                STR        R6,
                STR        R5,
                STR        R1,
                STR        R3,
                MOV        R0, R4
                ADD        SP, SP,        #0x84
                POP.W        {R4-R11,PC}
@; End of function PDM_Filter_64_LSB

@; ---------------------------------------------------------------------------
@;off_3DC:
@;        .word stm32_crc
@;dword_3E0:
@;        .word 0xB5E8B5CD
off_3E4:
        .word T1
off_3E8:
        .word T0
dword_3EC:
        .word 0xFFFF8044
off_3F0:
        .word T2
@; .text.PDM_Filter_64_LSB ends
        @ENDP
        .size PDM_Filter_64_LSB, .-PDM_Filter_64_LSB


@; Segment type:        Uninitialized
@;        .section .bss.stm32_crc
@;        @; ORG 0xCEC
@;        .global stm32_crc
@;        stm32_crc        % 4
@; .bss.stm32_crc ends
@; ===========================================================================




@; ===========================================================================
@; Segment type:        Pure data
        .section .data.T0
        .align 0
                @; ORG 0xCF0
        @.export T0
@; ===========================================================================
T0:
        .byte           0,0x1C,0x15,0x31,   0xF,       0x2B,        0x24,0x40
        .byte    0xA,0x26,0x1F,0x3B,0x19,       0x35,        0x2E,0x4A
        .byte           6,0x22,0x1B,0x37,0x15,       0x31,        0x2A,0x46
        .byte   0x10,0x2C,0x25,0x41,0x1F,       0x3B,        0x34,0x50
        .byte           3,0x1F,0x18,0x34,0x12,       0x2E,        0x27,0x43
        .byte    0xD,0x29,0x22,0x3E,0x1C,       0x38,        0x31,0x4D
        .byte           9,0x25,0x1E,0x3A,0x18,       0x34,        0x2D,0x49
        .byte   0x13,0x2F,0x28,0x44,0x22,       0x3E,        0x37,0x53
        .byte           1,0x1D,0x16,0x32,0x10,       0x2C,        0x25,0x41
        .byte    0xB,0x27,0x20,0x3C,0x1A,       0x36,        0x2F,0x4B
        .byte           7,0x23,0x1C,0x38,0x16,       0x32,        0x2B,0x47
        .byte   0x11,0x2D,0x26,0x42,0x20,       0x3C,        0x35,0x51
        .byte           4,0x20,0x19,0x35,0x13,       0x2F,        0x28,0x44
        .byte    0xE,0x2A,0x23,0x3F,0x1D,       0x39,        0x32,0x4E
        .byte    0xA,0x26,0x1F,0x3B,0x19,       0x35,        0x2E,0x4A
        .byte   0x14,0x30,0x29,0x45,0x23,       0x3F,        0x38,0x54
        .byte           0,0x1C,0x15,0x31,   0xF,       0x2B,        0x24,0x40
        .byte    0xA,0x26,0x1F,0x3B,0x19,       0x35,        0x2E,0x4A
        .byte           6,0x22,0x1B,0x37,0x15,       0x31,        0x2A,0x46
        .byte   0x10,0x2C,0x25,0x41,0x1F,       0x3B,        0x34,0x50
        .byte           3,0x1F,0x18,0x34,0x12,       0x2E,        0x27,0x43
        .byte    0xD,0x29,0x22,0x3E,0x1C,       0x38,        0x31,0x4D
        .byte           9,0x25,0x1E,0x3A,0x18,       0x34,        0x2D,0x49
        .byte   0x13,0x2F,0x28,0x44,0x22,       0x3E,        0x37,0x53
        .byte           1,0x1D,0x16,0x32,0x10,       0x2C,        0x25,0x41
        .byte    0xB,0x27,0x20,0x3C,0x1A,       0x36,        0x2F,0x4B
        .byte           7,0x23,0x1C,0x38,0x16,       0x32,        0x2B,0x47
        .byte   0x11,0x2D,0x26,0x42,0x20,       0x3C,        0x35,0x51
        .byte           4,0x20,0x19,0x35,0x13,       0x2F,        0x28,0x44
        .byte    0xE,0x2A,0x23,0x3F,0x1D,       0x39,        0x32,0x4E
        .byte    0xA,0x26,0x1F,0x3B,0x19,       0x35,        0x2E,0x4A
        .byte   0x14,0x30,0x29,0x45,0x23,       0x3F,        0x38,0x54
@; .data.T0        ends
        .size T0, .-T0

@; ===========================================================================
@; Segment type:        Pure data
        .section .data.T1
        .align 0
                @; ORG 0xDF0
        @.export T1
@; ===========================================================================
T1:
        .byte      0,0x12,0x15,0x27,0x17,       0x29,        0x2C,0x3E
        .byte   0x18,0x2A,0x2D,0x3F,0x2F,       0x41,        0x44,0x56
        .byte   0x18,0x2A,0x2D,0x3F,0x2F,       0x41,        0x44,0x56
        .byte   0x30,0x42,0x45,0x57,0x47,       0x59,        0x5C,0x6E
        .byte   0x17,0x29,0x2C,0x3E,0x2E,       0x40,        0x43,0x55
        .byte   0x2F,0x41,0x44,0x56,0x46,       0x58,        0x5B,0x6D
        .byte   0x2F,0x41,0x44,0x56,0x46,       0x58,        0x5B,0x6D
        .byte   0x47,0x59,0x5C,0x6E,0x5E,       0x70,        0x73,0x85
        .byte   0x15,0x27,0x2A,0x3C,0x2C,       0x3E,        0x41,0x53
        .byte   0x2D,0x3F,0x42,0x54,0x44,       0x56,        0x59,0x6B
        .byte   0x2D,0x3F,0x42,0x54,0x44,       0x56,        0x59,0x6B
        .byte   0x45,0x57,0x5A,0x6C,0x5C,       0x6E,        0x71,0x83
        .byte   0x2C,0x3E,0x41,0x53,0x43,       0x55,        0x58,0x6A
        .byte   0x44,0x56,0x59,0x6B,0x5B,       0x6D,        0x70,0x82
        .byte   0x44,0x56,0x59,0x6B,0x5B,       0x6D,        0x70,0x82
        .byte   0x5C,0x6E,0x71,0x83,0x73,       0x85,        0x88,0x9A
        .byte   0x12,0x24,0x27,0x39,0x29,       0x3B,        0x3E,0x50
        .byte   0x2A,0x3C,0x3F,0x51,0x41,       0x53,        0x56,0x68
        .byte   0x2A,0x3C,0x3F,0x51,0x41,       0x53,        0x56,0x68
        .byte   0x42,0x54,0x57,0x69,0x59,       0x6B,        0x6E,0x80
        .byte   0x29,0x3B,0x3E,0x50,0x40,       0x52,        0x55,0x67
        .byte   0x41,0x53,0x56,0x68,0x58,       0x6A,        0x6D,0x7F
        .byte   0x41,0x53,0x56,0x68,0x58,       0x6A,        0x6D,0x7F
        .byte   0x59,0x6B,0x6E,0x80,0x70,       0x82,        0x85,0x97
        .byte   0x27,0x39,0x3C,0x4E,0x3E,       0x50,        0x53,0x65
        .byte   0x3F,0x51,0x54,0x66,0x56,       0x68,        0x6B,0x7D
        .byte   0x3F,0x51,0x54,0x66,0x56,       0x68,        0x6B,0x7D
        .byte   0x57,0x69,0x6C,0x7E,0x6E,       0x80,        0x83,0x95
        .byte   0x3E,0x50,0x53,0x65,0x55,       0x67,        0x6A,0x7C
        .byte   0x56,0x68,0x6B,0x7D,0x6D,       0x7F,        0x82,0x94
        .byte   0x56,0x68,0x6B,0x7D,0x6D,       0x7F,        0x82,0x94
        .byte   0x6E,0x80,0x83,0x95,0x85,       0x97,        0x9A,0xAC
@; .data.T1        ends
        .size T1, .-T1


@; ===========================================================================
@; Segment type:        Pure data
        .section .data.T2
        .align 0
                @; ORG 0xEF0
        @.export T2
@; ===========================================================================
T2:
        .byte      0,   0,   1,   1,   3,          3,           4,          4
        .byte      6,   6,   7,   7,   9,          9,       0xA,        0xA
        .byte    0xA,   0xA,   0xB,   0xB,   0xD,          0xD,       0xE,        0xE
        .byte   0x10,0x10,0x11,0x11,0x13,       0x13,        0x14,0x14
        .byte    0xF,   0xF,0x10,0x10,0x12,       0x12,        0x13,0x13
        .byte   0x15,0x15,0x16,0x16,0x18,       0x18,        0x19,0x19
        .byte   0x19,0x19,0x1A,0x1A,0x1C,       0x1C,        0x1D,0x1D
        .byte   0x1F,0x1F,0x20,0x20,0x22,       0x22,        0x23,0x23
        .byte   0x15,0x15,0x16,0x16,0x18,       0x18,        0x19,0x19
        .byte   0x1B,0x1B,0x1C,0x1C,0x1E,       0x1E,        0x1F,0x1F
        .byte   0x1F,0x1F,0x20,0x20,0x22,       0x22,        0x23,0x23
        .byte   0x25,0x25,0x26,0x26,0x28,       0x28,        0x29,0x29
        .byte   0x24,0x24,0x25,0x25,0x27,       0x27,        0x28,0x28
        .byte   0x2A,0x2A,0x2B,0x2B,0x2D,       0x2D,        0x2E,0x2E
        .byte   0x2E,0x2E,0x2F,0x2F,0x31,       0x31,        0x32,0x32
        .byte   0x34,0x34,0x35,0x35,0x37,       0x37,        0x38,0x38
        .byte   0x1C,0x1C,0x1D,0x1D,0x1F,       0x1F,        0x20,0x20
        .byte   0x22,0x22,0x23,0x23,0x25,       0x25,        0x26,0x26
        .byte   0x26,0x26,0x27,0x27,0x29,       0x29,        0x2A,0x2A
        .byte   0x2C,0x2C,0x2D,0x2D,0x2F,       0x2F,        0x30,0x30
        .byte   0x2B,0x2B,0x2C,0x2C,0x2E,       0x2E,        0x2F,0x2F
        .byte   0x31,0x31,0x32,0x32,0x34,       0x34,        0x35,0x35
        .byte   0x35,0x35,0x36,0x36,0x38,       0x38,        0x39,0x39
        .byte   0x3B,0x3B,0x3C,0x3C,0x3E,       0x3E,        0x3F,0x3F
        .byte   0x31,0x31,0x32,0x32,0x34,       0x34,        0x35,0x35
        .byte   0x37,0x37,0x38,0x38,0x3A,       0x3A,        0x3B,0x3B
        .byte   0x3B,0x3B,0x3C,0x3C,0x3E,       0x3E,        0x3F,0x3F
        .byte   0x41,0x41,0x42,0x42,0x44,       0x44,        0x45,0x45
        .byte   0x40,0x40,0x41,0x41,0x43,       0x43,        0x44,0x44
        .byte   0x46,0x46,0x47,0x47,0x49,       0x49,        0x4A,0x4A
        .byte   0x4A,0x4A,0x4B,0x4B,0x4D,       0x4D,        0x4E,0x4E
        .byte   0x50,0x50,0x51,0x51,0x53,       0x53,        0x54,0x54
@; .data.T2        ends
        .size T2, .-T2

        @ENDP
        .end

90999 发表于 2015-3-8 18:39:32

不懂汇编,是不是,先低通,然后再抽取?

caixiuwen 发表于 2015-3-8 20:42:35

楼主就把ST提供的那个“libPDMFilter”给反汇编了一下,然后加个手机号,啥都不说,这样真的好吗?
变量名还是var_A4这样的自动生成的名字。。。楼主要是分析一下,然后把那些变量名改成自己理解的名字那就很有用了。或者楼主分析一下这filter是IIR的还是FIR的,写的好不好,效率怎么样啥的啊。
或者拿网上开源的PDM to PCM代码来给我们分析一下也不错。。。

dudududu 发表于 2015-7-14 10:55:14

caixiuwen 发表于 2015-3-8 20:42
楼主就把ST提供的那个“libPDMFilter”给反汇编了一下,然后加个手机号,啥都不说,这样真的好吗?
变量名 ...

网上有开源的PDM转PCM么,目前正好要用到这个功能,但是ST的那个PDM filter库,我没有看懂怎么搞

caixiuwen 发表于 2015-7-14 14:09:42

dudududu 发表于 2015-7-14 10:55
网上有开源的PDM转PCM么,目前正好要用到这个功能,但是ST的那个PDM filter库,我没有看懂怎么搞 ...

以前在网上看到过有人自己写的,分享出来了。不过我没试过。ST的库好像不难用,有个说明文档的。

sunweihejuan 发表于 2015-10-21 23:40:49

这个代码的不好用。只能作普通的语音解码。频宽很窄。 并且噪声也大。严重消耗系统资源。
还不如用内置的ADC,做滤波处理。

sunweihejuan 发表于 2015-10-21 23:41:39

当然硬件做得要相当过硬。
页: [1]
查看完整版本: PDM to PCM 代码