|
|
使用下面的例子代码,不能使SIMO和CS为低电平:0 R1 H3 ]' B4 v4 o6 e$ o' l+ f2 W
void PSCInit(void)
+ ^4 r3 _% H( x6 X{
3 _- V' j2 J' y' n% o% q* T PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# Z) v+ j* s `6 T/ U8 i) e `6 e}
) Y0 o# N) r& u' g4 ?3 }
! t* l5 Y; \3 xvoid GPIOBankPinMuxSet(void)! P6 Q) p; c& H9 k; F; g1 ]
{% A5 n4 x* T8 V* c& {
// DRDY ------------ GPIO6[14] -- 111
1 A) q1 }8 v7 j/ d0 M9 h- [0 S // SPI1_CLK ------------ GPIO2[13] -- 46+ ^0 N5 k4 g# N7 q* i2 K; l5 o+ ?
// SPI1_SOMI------------ GPIO2[11] -- 44; W$ I. v" S+ C: w
// SPI1_SIMO------------ GPIO2[10] -- 43" f+ c8 e0 l4 R4 M8 u
// SPI1_CS2 ------------ GPIO1[0] -- 17
. R0 `5 ^6 d; r6 k6 j; Y5 x0 P // SPI1_CS3 ------------ GPIO1[1] -- 18
, R) w+ [ u9 `: r! `- A3 C1 }0 u- f, r& `+ z- u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 W% _$ r& S. J# k; q' U4 O, o
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 c% @* O2 V7 v) c5 h HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ i! C2 K# r# t( g% }
. B' H! l. d, B
//DRDY5 r9 _& J% e7 B# R3 A
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
% K- P: \ b- E) Y, T: \ // CS2,CS3
D. X. ~% K( S N; U GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
, v2 |3 i0 u e7 A GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 F: d2 a. J% p
//SIMO
7 f. _+ d& z0 r% x GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 X4 {5 u. G7 L. \
//SOMI
5 f8 M [1 w1 P# v7 @( W* O8 A5 p0 B GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. G+ k- l2 D& C: P# F
//CLK0 v% K, N) ^) Z$ g
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 ~; j w$ q# G! T# |( n: x k4 z% d; \7 N% p# O4 z. R# |
// LDAC
~' |# v) l; ? GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 t2 V+ |* ` V, z |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 G' i8 T2 r b; K( {8 u
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# `4 o6 b6 m6 U! |5 H; {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS34 B- C9 C2 [: T, h
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ y9 q1 L2 W7 `7 j1 ?- `
}
) s! `3 X& `: F9 v
: _6 g0 d! x! z2 Eint main(void)
( c; Z0 T, X, ]4 N{
2 e6 h+ m: J, g; g0 r( M# f' G1 m // 外设使能
% C% u* n3 |- e6 w9 Y5 [ PSCInit();) S% `' w: e7 r
; [- f! c4 s( I$ l
4 Z/ R) ?% t* Y/ ~5 \1 I6 c4 Z2 B
// 管脚复用配置
; q2 `! L* l$ e0 D8 B GPIOBankPinMuxSet();( G' ^ a/ W4 q0 J* p1 k$ h7 _
for(;;)# e$ p* f7 P' S5 ~! K
{
# W5 w" Z( |( {9 W+ W5 U1 Z$ B2 Y SET_SCLK();//时钟正常输出8 s' u S; L( L# h8 _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 P8 t( E) ]# g* _3 r% v3 U$ _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ I5 o, f8 ^$ t4 q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, Z% v1 G$ Q4 Q
0 e9 b+ T* u- V7 X
delay(20);
8 u) E9 `8 y' J" g; S) P7 j( f CLR_SCLK();/ V4 ?. Y4 \# Y% @( y* Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS31 O' j- Z9 m3 E
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& U, U6 H* D( y8 k- B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 p8 t& y5 i" D7 x& d
delay(20);
: x8 L; n' M+ H. k, { }
7 x/ Y4 u. [/ M6 i}
' K: I, o9 n" ~* v5 k% C5 |4 R1 g |
|