|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ k; d- k* Y9 ^$ {1 xvoid PSCInit(void)- k# y( L$ U5 B
{
' W+ R9 c e( u, K PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! v/ q+ Z2 ^+ h}. J/ Q. K# z% J: t2 V
" O; S2 s) h# ~$ p- vvoid GPIOBankPinMuxSet(void)- \0 W3 q8 }7 o g. F9 z
{4 E3 d* S, M" ^9 j6 e9 @
// DRDY ------------ GPIO6[14] -- 111
/ }5 ?6 F8 E4 k/ V // SPI1_CLK ------------ GPIO2[13] -- 46; a6 \# N6 J5 ?: V/ _# Q5 @
// SPI1_SOMI------------ GPIO2[11] -- 44: F; N' q3 \( |% S f
// SPI1_SIMO------------ GPIO2[10] -- 43
1 L" h6 _$ n1 w5 @: O5 _) L // SPI1_CS2 ------------ GPIO1[0] -- 17
4 ^: ]$ ]$ H6 [$ v // SPI1_CS3 ------------ GPIO1[1] -- 18& }0 X1 B8 B7 } X
, ~1 y% Z" z) i- D9 q- _! J. w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 o" |9 T" b+ `3 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( t6 d3 X ]' x6 `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
6 J$ F' t( C2 c2 y, a' q8 Q. L! i5 Q4 i4 X
//DRDY
7 ]6 D& T: j) f7 N GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY3 s5 o+ I J) |6 V4 b" `2 W
// CS2,CS37 k6 w7 `4 U( T9 r5 q+ E) J
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* Z; e/ [7 X m' u! V6 p
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
# `* ^$ J T# J; x: _3 r B" M //SIMO0 y/ v& L' {: A' S! v' ~3 S$ A
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 m. D/ A/ r3 B6 u$ R
//SOMI1 ?7 k8 D' R4 _
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 l, f8 R1 e! n! r2 v4 z& j) G6 s
//CLK, S g: J% b: t5 v
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, r* `+ z$ m# I/ G) a @
( X3 W4 J* c4 ]7 f9 U: z% A, s // LDAC' P5 b1 }) X' ?# V- D
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK- x3 D3 \1 A; Z3 |. j3 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# D; X8 @* E4 P$ A) } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 `1 |2 v3 N5 a0 E! ~- f# v- z% K. f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, }) f1 l A3 f0 K" c
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 E6 _% o+ c2 x% q
}7 O6 L+ g& A2 N# Z& ~
# a; H/ E2 b* g1 A( P( c% ~
int main(void)
6 z5 E! z7 p9 v7 Y{; B) L& x, K1 Q% e6 ]& k1 g: _
// 外设使能
( F, B( Y2 e/ j+ l3 ` PSCInit();
, T! E' Q% a% C; h/ c! S# w
4 H# P& K- N5 }0 ~" a
* n- M- E" r3 r# [2 c // 管脚复用配置
; ?+ H% ]3 s8 y GPIOBankPinMuxSet();9 a% I& ~6 J! f: } Z
for(;;)
( m* i; I: f# l* Z8 A3 z9 W& q {
& B) C) U$ V# x$ t SET_SCLK();//时钟正常输出
# B7 n6 n+ Z' Z5 e% [) k$ N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ g0 v! s: X7 O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 g8 |. m1 }) C! P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 Q. y+ i( M1 f/ a7 I b
: N, Z t! Y/ w6 r4 ]
delay(20);
/ J" I* U# E7 a CLR_SCLK();- ~- N( Z0 [/ @8 F7 g" c; ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: r6 K1 o7 |$ z6 i3 s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS33 o6 Q0 j1 Q3 _; N# q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 p0 l' l( @$ i" J3 W# z
delay(20);
% a- H& E* Y* h5 w }4 D+ E2 o" t( L. b5 T+ H
}4 R+ A! V! A+ r$ k
|
|