|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% A' T b) S7 k! _4 ^6 M
void PSCInit(void)
$ u6 w- H, p% N- Q{
) g7 S5 Z y. ?% r2 e8 H; Y PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 g: w* F/ c& A# k4 F+ L- r" k}- E; g9 Y- u/ P+ N& ?' |$ ?
" M2 d: Y) \* K) y U' |& L& \
void GPIOBankPinMuxSet(void)
" ? g6 z3 t2 ~ E. j& r3 s, H8 `; N7 D{
6 W" w" g3 s2 q // DRDY ------------ GPIO6[14] -- 111
% d) R1 M; N% N7 D) t, e( O# _ // SPI1_CLK ------------ GPIO2[13] -- 46
8 x5 U" y) p/ {; N) o // SPI1_SOMI------------ GPIO2[11] -- 44
6 }+ t7 i+ ?3 j4 Z2 U // SPI1_SIMO------------ GPIO2[10] -- 43( o1 @' Q/ u7 V
// SPI1_CS2 ------------ GPIO1[0] -- 173 r F# U, a' U' M# f) U* P8 F4 U3 z7 T
// SPI1_CS3 ------------ GPIO1[1] -- 18
3 P! }7 \3 w; q$ A) ]( ~! X$ @/ F1 b
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. X- {* _, m' w* ?' t( Y4 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 P2 Q! a) u( d2 W' H HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 |" n+ s. M1 g3 j# J
: K- L* m7 l* D1 ]. g! n //DRDY& X$ y- k) V: N) j9 a. @' S
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; w: I/ _% n; c& G // CS2,CS3% c$ [# E. { ~, ~; Y: n
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS25 J3 m- {; W0 \3 M2 U7 u
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS38 |5 \* Y5 x! O$ y) x" ?8 j3 J
//SIMO' q `, M! J7 Q5 Z7 C$ h7 ^2 I3 k9 z
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! F3 }6 q! {; H/ v //SOMI, e- J" _5 C/ y+ T2 X& X
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. T; x5 X( [. c' x' t
//CLK2 A7 D9 p3 G5 i3 ?1 l! A- Q$ Y# f- W5 U
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK3 E# [* K1 r# y/ V
2 g+ u# I! ]$ D2 L8 {
// LDAC' e1 |( \7 z, b$ S0 z6 O
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 _* ~* Q T1 y+ P; _ c1 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- k) z; B2 s; l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. A7 u5 C4 g$ z9 T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS39 t! E0 E: r5 E$ P" |
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! \2 {0 K1 ~; ?3 t+ j9 I- k" I V}
) O, W) ~1 u# ]5 I; r0 B/ g: R+ X- Z% |6 E; v" Q- @
int main(void)
& ~% \: ^. Q+ l E) t+ K: C{
3 f' _! g" ~# x' w // 外设使能+ E: I! Q1 J/ G8 z* Q
PSCInit();
# V7 p9 w( Y; Y# q) [. s5 w7 ?. @& q t7 P. C6 o
4 E, I# x, T4 \) ^- t/ P5 H/ Y
// 管脚复用配置
# {* L2 f, ^3 ?7 ~ GPIOBankPinMuxSet();
k& J- p! r e" A, L3 I0 n for(;;)
" o* C/ m% c) ^3 _ {+ `) n/ y* V# s( }* Q
SET_SCLK();//时钟正常输出; @' p& F: K+ g+ B& a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ @ {: F2 i6 y! N' W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# t; Y( X8 K' S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 ` |0 n O$ W2 }7 p$ ]8 T3 t
: E) |% E7 E# D* t: x" F delay(20);
# a) b) ~, S! u' R' Q. n+ M CLR_SCLK();. D/ b% I4 `- ^+ n7 I6 o1 v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! F2 ^$ v: J3 ?# T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
# i7 O* a/ r# e+ W2 J5 O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) ?0 E. \: K; `7 H8 E2 N2 w2 U delay(20);
& t5 z& c! ^5 l# i' `) i8 Z }
@. U$ t' A, @* t* g$ Y! p}* p: E! R5 Y9 @; J6 ]+ H2 d
|
|