|
|
使用下面的例子代码,不能使SIMO和CS为低电平:, Z, P7 |$ X& ~
void PSCInit(void)
9 x6 {, n$ i6 F+ H7 H& [7 q{, w6 b6 C) [ f0 K' I
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 y$ B- v( j9 q. W$ ~4 `}
5 |: _7 h% h7 A: \2 G+ E. g
3 l; r. o- l3 A# i4 A8 N1 kvoid GPIOBankPinMuxSet(void)( |6 K9 p! x6 N7 G1 r) v. o
{/ P* Z% Q% v5 Y3 g0 f7 b
// DRDY ------------ GPIO6[14] -- 111
) D6 W. W6 M h* r" q3 b // SPI1_CLK ------------ GPIO2[13] -- 463 H5 F, u: |: s
// SPI1_SOMI------------ GPIO2[11] -- 44
: S& s/ b1 s P3 }4 x // SPI1_SIMO------------ GPIO2[10] -- 43
( o0 v( n1 y( T4 L6 |/ h9 K // SPI1_CS2 ------------ GPIO1[0] -- 17: ]7 B4 w, N# V+ H
// SPI1_CS3 ------------ GPIO1[1] -- 187 e1 L/ c/ O' d Z, j
* Y V/ [- u' o7 h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
9 j( f/ l0 O8 |9 M4 j2 p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
/ c) n( Y3 J* i; G1 M4 s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) U. [, p5 p2 d
% Z# m- Y, }: v) V
//DRDY) F" f+ S+ _7 q# N- M
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
0 S% {/ ?1 a: T' F+ _ // CS2,CS3
9 `5 V7 ?& \5 y+ s9 W) T5 y" _; ?' S GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, e7 h+ o# X% @( `
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
" m7 i5 r. Q) x, A- T; v //SIMO% q* c1 i$ ?' N$ P' K
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& t. B7 L# e+ ~
//SOMI: u# h; Y1 U5 x1 t$ C
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
, Y; A5 x' l' @5 T' X* U$ w/ O( F7 J" M //CLK
* v! z# t0 G+ G! r GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" l1 |( X+ C% w% X: Q8 e) |: D- ]9 M# d5 a4 p8 z0 j) w
// LDAC
( T- I; G" A7 { GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. y ?+ e' v/ I D' e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 G( }# p. r' _2 w$ c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- w/ ]. G: ^9 x& d. c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* [; M7 ]& V! G5 U4 v, ~. T4 D& Y GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 u1 @. e l" z; v& Y$ T
}( ]- @- e, L4 H) k. ~# D
! ?2 x5 ?1 A4 S1 J/ D
int main(void)
% k" ]: ]) a( E, S; u{
9 g+ P5 g8 R& Y5 V3 ]( p // 外设使能
- |/ q% K, P v U) Y; d. y PSCInit();
: G! j* d# J8 e+ {1 U4 X# r0 i% a3 T( P/ W
9 Z* G- c+ \9 U3 }5 f; d! b // 管脚复用配置8 x* R% h0 J. A6 m5 C/ s/ ]* \1 _
GPIOBankPinMuxSet();( g1 V& f7 d9 |
for(;;)& g1 _, u! P' _' E+ k2 q
{, ?4 W5 m, ?5 {; x" }
SET_SCLK();//时钟正常输出
}! ~" T' H5 E- G9 z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 V) s( g: Q1 \# q/ K% x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, J, f. {; V, Z7 P; X7 u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN ^- o; I$ k, u6 J& {6 D
' h$ H% B F/ s1 F6 z; J/ x, j delay(20);
; z, D, I& C, A- {& ? c: b CLR_SCLK();7 \+ L; u* _3 F0 V; c m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ C5 t# r% X1 I6 f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 n& p2 H3 f" y3 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" ]7 E7 P! E! `, E6 f: Z. g
delay(20);
( W1 o# C1 V) a }# B. R# ]: b* S6 T2 x: h
}+ O# s0 M5 ?# Q: H
|
|