|
使用下面的例子代码,不能使SIMO和CS为低电平:- g' x: e3 p# P' H
void PSCInit(void); m% D& j% e& H
{
$ U5 K' ~2 }5 |, a5 b0 n: ?" g PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 o% U" q" z; {3 q) q+ v: A# ]; I$ ]" e
}
0 w# O' W# t8 g4 h3 m, K# o Q
8 ^ L- c8 z( Lvoid GPIOBankPinMuxSet(void)
' j4 H; n3 i0 t% E8 ~( q- B{' x1 ?# t& ^& i a9 F8 x
// DRDY ------------ GPIO6[14] -- 111! _! m0 p6 P' _
// SPI1_CLK ------------ GPIO2[13] -- 46
" e5 P; P% f" q2 y // SPI1_SOMI------------ GPIO2[11] -- 44
( Q, V) {! x- T+ x( a // SPI1_SIMO------------ GPIO2[10] -- 43; o8 s, ^7 ?3 G- Q
// SPI1_CS2 ------------ GPIO1[0] -- 17
) p5 [; X8 g1 W" Q" ]3 I // SPI1_CS3 ------------ GPIO1[1] -- 18
3 d3 @: Q: B. M4 H/ O" f$ X4 F. p# J# |1 B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: B' z. V8 z( G2 B1 T. P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
+ ?, `: s g, k3 N+ a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
# q& r/ m, Y9 b. V5 Z$ k; A) y% u- k* O* m
//DRDY0 e9 V1 }5 I, q: d5 J5 ]; z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. R/ v* ] M9 X. ^ // CS2,CS3# Q) _7 n t5 D- K7 X
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
' U# r2 W* ]4 _. _6 f GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
+ T& `4 ^- G( L- [# P0 b0 C //SIMO) E8 {2 y: I6 N, O8 L% j6 @5 g
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
3 x5 s) Y- C# D% h c { //SOMI% _' L% i% g2 Z8 Y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
w% E% W- u# z$ V3 g; @9 N4 D //CLK' M% l" D8 P4 S
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ T) d2 }, A5 Z! X* E( a# I* r$ y( V# u1 H7 @4 N
// LDAC
f! Y$ Z/ H% ^6 c GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
% A: U- M/ p2 ^- X% [6 Q7 G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" P% c' \( j) q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 n3 p- v: N @6 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS31 J8 p( O" v) |6 m. K, D6 L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# @. e3 Z' N* q# J" m
}4 R4 ^" ? A9 V( b0 x# s
" f+ }0 ]3 U- n! B7 X0 M" ~
int main(void)
! Z, P( Q, Y, R$ U3 O) a{, i# v/ y! X% R2 |+ F2 ]" x
// 外设使能/ Z! S5 j- A$ c( \- x) r
PSCInit();$ I+ `- k6 p" m* _( F: e0 X3 G8 H
. C5 }) D( }6 U) R7 M7 v" E
3 h$ K* o- z" O6 d' N // 管脚复用配置
4 ^$ m+ Y; Q6 }$ O2 B3 K GPIOBankPinMuxSet();/ a6 b0 ?- I1 u- o3 [0 L. B
for(;;)2 l! _7 A: n) e* M
{
/ u6 B% `& W } SET_SCLK();//时钟正常输出5 p0 P. W* g2 {% V' ~! g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 i+ n. J$ }1 }/ M, j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ s9 W8 d$ j$ k1 z4 N- H m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! Y" O, ~) Q, N+ C' ~; A
' L, K9 B5 F) U delay(20);
" A, j# e6 ~& t; T9 @. v CLR_SCLK();+ u& f* u/ U3 Q5 a) y0 p, m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS33 k; C2 d8 b: D& c: o. ^* q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
; `" ^8 _. t- g9 l! d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& j) g j% ~4 C. c
delay(20);" N6 @9 g8 U2 W3 w4 y; L
}# R% ^+ I. o7 y
}7 ~' [( A8 s4 C; ?% ] Z* i. e
|
|